我正在 Google Sheets 中运行 Apps 脚本来邮件合并并生成 PDF 文件,然后将该文件存储在云端硬盘中。
我有以下变量,用于存储 Google 文档,该文档用作正在生成的新 PDF 的模板。
var GDOC_TEMPLATE_ID = '1olnBowCh-1apK3jWN-Lr2Ty3UT1NK_dmoJOVBjnzgO8'
我想要一个函数来修改此变量的值,以便它可以指向不同的文件。
我一直在尝试做的是以下脚本,但根本没有完成:
注意:我的邮件合并脚本通过选择行运行并从所选行获取所有占位符,因此当其中一个字段为空时,我尝试指向更适合的不同模板。
这是正在使用的脚本,它在 GitHub 中公开,并且包含该过程每个部分的说明
谢谢
我相信您的目标如下。
1olnBowCh-1apK3jWN-Lr2Ty3UT1NK_dmoJOVBjnzgO8
的文件ID作为GDOC_TEMPLATE_ID
。当“N”列的值不为空时,您想使用另一个文件ID作为GDOC_TEMPLATE_ID
。既然如此,下面的修改如何?请修改
getSheetData()
如下。
function getSheetData() {
copyFile = DriveApp.getFileById(GDOC_TEMPLATE_ID).makeCopy()
var copyId = copyFile.getId()
copyDoc = DocumentApp.openById(copyId)
copyBody = copyDoc.getActiveSection()
var activeSheet = SpreadsheetApp.getActiveSheet()
var numberOfColumns = activeSheet.getLastColumn()
activeRowIndex = activeSheet.getActiveRange().getRowIndex()
var activeRowRange = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns)
activeRowValues = activeRowRange.getDisplayValues()
headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues()
}
请将
### other ID ###
替换为您的文件 ID。
function getSheetData() {
var activeSheet = SpreadsheetApp.getActiveSheet()
var numberOfColumns = activeSheet.getLastColumn()
activeRowIndex = activeSheet.getActiveRange().getRowIndex()
var activeRowRange = activeSheet.getRange(activeRowIndex, 1, 1, numberOfColumns)
activeRowValues = activeRowRange.getDisplayValues()
headerRow = activeSheet.getRange(1, 1, 1, numberOfColumns).getValues()
var templateIds = ['1olnBowCh-1apK3jWN-Lr2Ty3UT1NK_dmoJOVBjnzgO8', '### other ID ###'];
GDOC_TEMPLATE_ID = templateIds[activeRowValues[0][13] ? 1 : 0];
copyFile = DriveApp.getFileById(GDOC_TEMPLATE_ID).makeCopy()
var copyId = copyFile.getId()
copyDoc = DocumentApp.openById(copyId)
copyBody = copyDoc.getActiveSection()
}
1olnBowCh-1apK3jWN-Lr2Ty3UT1NK_dmoJOVBjnzgO8
用作GDOC_TEMPLATE_ID
。当“N”列的值不为空时,使用另一个文件 ID ### other ID ###
作为 GDOC_TEMPLATE_ID
。