我正在尝试为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;
}
答案 0 :(得分:0)
暂不公开评论,抱歉。你试过getBlob()吗?如果你可以获取内容,似乎这样可行。然后,您可以将blob转换为可以使用的字符串。