在我的电子表格中,我在 GAS 中插入了 35 个项目,以从同一张表中生成 google doc,其中占位符存在于文档中。
该脚本从包含该脚本的工作表中的每一行中获取字段,并使用 Google Doc 模板(由 TEMPLATE_ID 标识)创建一个 PDF 文档。这些字段替换模板中的占位符。占位符通过在两边都有一个 % 来标识,例如 %Name%。它由“创建 PDF”菜单调用。
自然地,我为每个 Google Doc 模板创建了一个项目(因为我需要来自 35 个不同模板的 35 个不同的文档),所以在我的工作表中,我在菜单中有大约 35 个自定义语音来激活每个脚本。有时有些脚本不会一起出现,所以我必须重新加载工作表才能找到我需要的脚本。
为什么?有办法避免这种情况吗?
脚本是这样的:
var TEMPLATE_ID = 'xxxxxxxx';
var PDF_FILE_NAME = '';
var RESULTS_FOLDER_ID = 'xxxxxxx';
var SENT_COLUMN_NAME = 'Date Sent';
var FILE_NAME_COLUMN_NAME = 'File Name';
var EMAIL_COLUMN_NAME = 'Email';
var DATE_FORMAT = 'yyyy/MM/dd';
var DATE_TIME_FORMAT = 'yyyy/MM/dd HH:mm:ss';
function sendMultiplePdfs() {
var ui = SpreadsheetApp.getUi();
if (TEMPLATE_ID === '') {
throw new Error('TEMPLATE_ID needs to be defined in Code.gs');
return;
}
var templateFile = DriveApp.getFileById(TEMPLATE_ID);
var activeSheet = SpreadsheetApp.getActiveSheet();
var ranges = activeSheet.getActiveRangeList().getRanges();
var activeRows = [];
ranges.forEach(function(range) {
activeRows.push(range.getValues());
})
更新:
通过替换从单元格中动态获取值的模板 ID 来解决:
var ss = SpreadsheetApp.openById("ID_OF_THE_SS").getSheetByName("SHEET_NAME");
var TEMPLATE_ID = ss.getRange("RANGE_OF_THE_ID").getValue();