如何在Google电子表格中的“on edit”可安装触发器中询问用户输入?

时间:2017-11-24 21:01:08

标签: google-apps-script google-sheets google-spreadsheet-api

当用户将特定列中的单元格编辑为特定值时,将根据新值将消息发送到Telegram机器人。

这是通过installable trigger上的“edit event”实现的。它由文档所有者安装,并始终在该帐户下运行。还有其他用户编辑文档并触发操作。一切正常。

现在我们需要从进行编辑的用户那里请几句话。

但是自2017年11月起(请参阅issue 68846962)“出于安全原因”Google限制了他们的Apps脚本,现在Ui方法prompt()showSideBar()仅供用户使用谁创造了触发器。对于其他人,它会导致“您无权调用showSidebar()”错误。

可以为所有用户请求和接收有关单元格编辑事件的用户输入的解决方法?考虑到进一步的操作需要访问外部服务的权限(调用Telegram API)。

1 个答案:

答案 0 :(得分:2)

作为一种可行的解决方法,您可以创建单独的工作表,这将成为您的表格"用户输入:

form

"提交"按钮应该是一个图像,通过上下文菜单为其分配功能 - "分配脚本" (输入您的函数名称以处理"表格"数据):

form

然后你的onEdit触发器应该激活" form"编辑发生时当前用户的工作表。示例代码:

function onEdit() {
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').activate();
}

填写表单后,用户点击"提交"图像,然后您可以将数据发送到外部服务,示例代码:

function submit() {
  var response = UrlFetchApp.fetch("http://www.google.com/");
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Results').appendRow([response.getResponseCode(), new Date()]);
}