好吧,我有99%的经验,这要归功于许多其他有关如何执行此操作的帖子。
我在做什么? 我有一个谷歌表格。当该表格完成并且答案在相应的Google工作表中时,我还有另一个选项卡,该选项卡具有一个模板(带有一堆公式),该模板可以自动填充人员的薪水。第一个公式是名称,它不属于“表单响应”选项卡。以下脚本隐藏了所有其他工作表,将我想要的一个选项卡保存到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()
}
答案 0 :(得分:0)
您正在从电子表格getRange()
调用ss
E5,它可能是也可能不是您要获取其范围的表。 E5
可能是来自另一张纸的yes
。试试
ss.getSheetByName('Sheet1').getRange('E5')