【问题标题】:How can I use OnSubmit trigger to run function on a google spreadsheet?如何使用 OnSubmit 触发器在谷歌电子表格上运行函数?
【发布时间】:2020-05-14 22:59:50
【问题描述】:

我将尝试解释这种情况,以便您更好地理解我的问题。我有一个包含 3 张表格的电子表格:第一张包含表格中的答案,第二张包含第二张表格中的答案,第三张是一张表格,它通过 ARRAYFORMULA 从第一张和第二张表格中收集数据,它是行。我使用“OnSubmit”触发器允许电子表格从第三张表中获取数据并将它们放在第四张表上的某个特定单元格中,然后允许我以 PDF 格式下载第四张表。问题是该脚本仅在我从编辑器中尝试时才有效,但当我提交表单时它不起作用。 “OnSubmit”触发器报告此错误“异常:无法从此上下文调用 SpreadsheetApp.getUi()”。有没有办法解决?谢谢

function downloadSheetAsPDF() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetId = ss.getSheetByName("DDT").getSheetId();
var url = "https://docs.google.com/a/mydomain.org/spreadsheets/d/" + ss.getId() + "/export?exportFormat=pdf&gid=" + sheetId + "&access_token=" + ScriptApp.getOAuthToken();
var str = '<input type="button" value="Download" onClick="location.href=\'' + url + '\'" >';
var html = HtmlService.createHtmlOutput(str);
SpreadsheetApp.getUi().showModalDialog(html, "Download PDF");
} ```


【问题讨论】:

  • 请贴出代码,以便我们更好地理解问题。
  • 没有看到代码,我不明白你为什么要使用 .getUi() 这个?它可能需要删除。
  • 当触发器运行函数时,电子表格不会打开用户界面。它只是打开服务器上的电子表格,因此没有可用的用户界面,并且不允许您在该上下文中使用它们。
  • 那我该如何解决?
  • 您可以创建 pdf 并将其作为电子邮件附件发送

标签: google-apps-script google-sheets google-sheets-formula google-forms


【解决方案1】:

正如 Cooper 在 cmets 中提到的,不可能触发在表格中打开 UI 窗口,因为它需要用户交互。也无法进行自动下载。

有关触发器限制的更多信息:

https://developers.google.com/apps-script/guides/triggers#restrictions

【讨论】:

  • 谢谢,我会尝试寻找其他解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-16
  • 2018-06-08
  • 1970-01-01
相关资源
最近更新 更多