创建时是否可以将图像从 Google Sheets 获取到 Google Docs 模板

问题描述 投票:0回答:1

这是我的谷歌表格图片。

enter image description here

我想当从模板导入到这里创建脚本时可以吗?

enter image description here

这里的代码我用来创建谷歌文档

// extract values from array of data
      var date_time = data[i][0];
      convert_time = Utilities.formatDate(new Date(date_time), "GMT+8", "E | dd/MMM/yyyy | hh:mm:ss a");
      var emp_name = data[i][1];
      var emp_id = data[i][2];
      var emp_dept = data[i][3];
      var emp_laptop = data[i][4];
      var emp_serialno = data[i][5];
      var emp_acc1 = data[i][6];
      var emp_acc2 = data[i][7];
      var emp_acc3 = data[i][8];
      var emp_acc4 = data[i][9];
      var emp_acc5 = data[i][10];
      var emp_sign = data[i][11];
      var it_sign = data[i][12];
      
// only proceed if got Body of new File
      if (openNewFile) {
        
        // replace tags with data from sheet
        newFileBody.replaceText('<<date-time>>', convert_time);
        newFileBody.replaceText('<<emp-name>>', emp_name);
        newFileBody.replaceText('<<emp-id>>', emp_id);
        newFileBody.replaceText('<<emp-dept>>', emp_dept);
        newFileBody.replaceText('<<emp-laptop>>', emp_laptop);
        newFileBody.replaceText('<<emp-serialnumber>>', emp_serialno);
        newFileBody.replaceText('<<emp-acc1>>', emp_acc1);
        newFileBody.replaceText('<<emp-acc2>>', emp_acc2);
        newFileBody.replaceText('<<emp-acc3>>', emp_acc3);
        newFileBody.replaceText('<<emp-acc4>>', emp_acc4);
        newFileBody.replaceText('<<emp-acc5>>', emp_acc5);
        newFileBody.replaceText('<<emp-sign>>', emp_sign);
        newFileBody.replaceText('<<it-sign>>', it_sign);
google-sheets google-apps-script google-docs
1个回答
0
投票

我认为这个答案可能有助于理解解决您的问题。 自动将Google Sheet生成的QR码作为图像传输到Google Doc当此答案的脚本反映在您的显示脚本中时,以下修改如何?

不幸的是,我不知道你的实际脚本。所以,这是一个简单的修改。请在您的实际脚本中反映这一点。

修改后的脚本:

请将以下函数添加到您的脚本中。

// ref: https://stackoverflow.com/a/71151203/7108653
var replaceTextToImage = function (body, searchText, url, width = 200) {
  var next = body.findText(searchText);
  if (!next) return;
  var r = next.getElement();
  r.asText().setText("");
  var img = r.getParent().asParagraph().insertInlineImage(0, UrlFetchApp.fetch(url).getBlob());
  if (width && typeof width == "number") {
    var w = img.getWidth();
    var h = img.getHeight();
    img.setWidth(width);
    img.setHeight(width * h / w);
  }
  return next;
};

并且,请按如下方式修改您的脚本。从您显示的图像来看,我猜测在您的情况下,

var emp_sign = data[i][11]
var it_sign = data[i][12]
是图像URL。另外,它假设您的 URL 的文件是公开共享的。请小心这一点。

来自:

newFileBody.replaceText('<<emp-sign>>', emp_sign);
newFileBody.replaceText('<<it-sign>>', it_sign);

致:

replaceTextToImage(newFileBody, '<<emp-sign>>', emp_sign);
replaceTextToImage(newFileBody, '<<it-sign>>', it_sign);

如果要更改图像大小,请将图像宽度添加到函数的第 4 个参数

replaceTextToImage

注:

  • 如果您使用我对脚本的修改而脚本不起作用,请提供您的整个脚本。我想确认一下。
© www.soinside.com 2019 - 2024. All rights reserved.