【问题标题】:Google Sheets Script - save as PDF - Get Name from Cell谷歌表格脚本 - 另存为 PDF - 从单元格中获取名称
【发布时间】: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


【解决方案1】:

您从电子表格ss 调用getRange() E5,这可能是也可能不是您要从中获取范围的工作表。 E5 可能是另一张纸上的 yes。试试

ss.getSheetByName('Sheet1').getRange('E5') 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多