GAS和Google Docs:makeCopy()并操纵body

时间:2015-09-03 09:48:56

标签: google-apps-script

我正在尝试为Google电子表格构建一个附加组件,该附加组件将Google文档作为模板,并使用电子表格中的值替换标记的段落。为了实现这一目标,我整理了一个侧边栏附加组件,以便用户可以选择他想要处理的行,然后可以单击按钮来运行脚本。

侧边栏本身正在工作并成功调用自定义函数。自定义函数本身也在工作,但由于授权有限(请参阅https://developers.google.com/apps-script/add-ons/lifecycle),只允许读取模板文件并复制它。当我尝试通过openById()访问新创建的文件时,它拒绝了请求。

我猜因为访问的限制实际上是设计的,我需要修改过程,例如在创建副本时进行操作。不幸的是我无法弄清楚如何做到这一点。我尝试了getContent()但是将内容作为PDF文档返回。 getBody()不适用于副本。

我非常感谢任何帮助。

自定义函数如下所示:

function createLetter(data, header) {

  var template = '1HsJsXgQr_GSUr0elF4llM-0QKj5ocjPmaNVSE3Eka2Q'
  var name = data[5]

  var doc = DriveApp.getFileById(template).makeCopy('TEST-Aufnahmeschreiben ' + name).

  var date = Utilities.formatDate(new Date(), "CET", "dd.MM.YYYY")

  var doc = DocumentApp.openById(copy).getBody()

  for (i in header) {
    doc.replaceText('{'+header[i]+'}', data[i])
  }

  if (data[4] == 1) {doc.replaceText('{Salutation}', 'Lieber')} else {doc.replaceText('{Salutation}', 'Liebe')};

  doc.replaceText('{Datum}', date);
  doc.replaceText('{Land}', 'Deutschland');

  return copy;
}

1 个答案:

答案 0 :(得分:0)

暂不公开评论,抱歉。你试过getBlob()吗?如果你可以获取内容,似乎这样可行。然后,您可以将blob转换为可以使用的字符串。