【发布时间】:2018-11-29 23:02:07
【问题描述】:
好的,感谢很多其他关于如何做到这一点的帖子,我 99% 都成功了。
我在做什么? 我有一个谷歌表格。当该表格完成并且答案在相应的谷歌表格中时,我有另一个标签,其中有一个模板(带有一堆公式),可以自动填充人们的工资率。第一个公式是名称,它来自表单响应选项卡。以下脚本隐藏所有其他工作表,将我想要的一个选项卡保存为 PDF,在我想要的文件夹中(然后取消隐藏其他工作表)。
问题 当我将其作为测试运行时,它可以完美运行。放入该文件夹的 PDF 以单元格 E5 的输出(这是一个公式)提取人名来命名。但是,当我将触发器设置为收到表单答案时,那么一切都是正确的(工作表上的所有数据都是正确的),只是文件的名称显示为“是”。我很困惑为什么它是“是”。如果我之后立即运行脚本,则它是单元格 E5 中的人的姓名.....这是我的代码。
触发器是否可以快速拉动响应?我认为这不可能,因为 PDF 上的输出是正确的。
function topdf() {
var foldersave=DriveApp.getFolderById('1dSOK6bBCRyEO0_fTuuMFH9sNa4wAWYW8');
var d= new Date();
var request = {
"method": "GET",
"headers":{"Authorization": "Bearer "+ScriptApp.getOAuthToken()},
"muteHttpExceptions": true
};
var key='1-e8dhOOZ5zwfeIBSTSH7yFNKgxVTxwqZvqcTNtQUQrA';
var fetch='https://docs.google.com/spreadsheets/d/'+key+'/export?format=pdf&size=letter&portrait=false'
var ss= SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets()
var name=ss.getRange("E5").getValue()
sheets[0].hideSheet()
sheets[1].hideSheet()
sheets[2].hideSheet()
sheets[3].hideSheet()
sheets[4].hideSheet()
sheets[5].hideSheet()
sheets[6].hideSheet()
var pdf = UrlFetchApp.fetch(fetch, request);
pdf = pdf.getBlob().setName(name);
var file = foldersave.createFile(pdf)
sheets[0].showSheet()
sheets[1].showSheet()
sheets[2].showSheet()
sheets[3].showSheet()
sheets[4].showSheet()
sheets[5].showSheet()
sheets[6].showSheet()
}
【问题讨论】:
-
这完全有效,感谢 TheMaster
-
第一次对不起。
标签: pdf google-apps-script google-sheets