【问题标题】:Is it Possible to Have a Prompt Show up For One Spreadsheet When Activated by Another?当另一个电子表格激活时,是否可以提示显示一个电子表格?
【发布时间】:2021-08-09 03:06:25
【问题描述】:

是否可以让触发器使用一个脚本来处理 2 个电子表格(2 个独立文件)?我被困在如何做这部分,因为它需要自动化。到目前为止,在我的研究中,我看到了 importrange 触发器,但没有任何东西可以在特定工作表上做提示。


我的目标是做一个“列表否决”功能,满足以下要求:

  1. 必须使用谷歌电子表格 a) 一张带有“触发器”的表格,即“控制器”或主持人 b) “首选”选民的一张纸 c) “次要”选民的一张纸

  2. 列表将是动态的,但在本例中,我们假设它包含 15 个位置的列表。

  3. 两位“选举人”将不得不连续否决,直到只剩下 8 个地点。

  4. “控制器”将触发一个系统,该系统首先询问“首选选民”,然后是“次要选民”,并通过提示进入他们各自的电子表格。一旦首选做出选择,位置列表就会被扣除,然后提示转到“次要”的工作表。

【问题讨论】:

  • 您可能需要使用“控制器”创建一个网络应用程序,并使用onEdit(e)从 2 个电子表格向“控制器”发布请求

标签: javascript google-apps-script google-sheets triggers


【解决方案1】:

触发器是通过电子表格而不是工作表设置的,但您可以使用 JavaScript 控制语句,如 if..elseswitch 来控制何时应该执行脚本的某些部分。

例子:

function respondToOnEdit(e){
  var sheetName = e.source.getActiveSheet().getName();
  if(sheetName === 'Sheet1'){
    // do something when Sheet1 is edited
  } else if(sheetName === 'Sheet2'){
    // do something when Sheet2 is edited  
  } else {
    // do something when any other sheet is edited
  }
}

您必须使用代码为每个电子表格创建可安装的触发器。

代码sn-p:

[id1, id2].forEach(id => {
var spreadsheet = SpreadsheetApp.openById(id);
ScriptApp.newTrigger('respondToOnEdit')
.forSpreadsheet(spreadsheet)
.create()
}

相关

【讨论】:

  • 我在我的文章中犯了一个错误:我需要它来与其他文件对话,就像在其他电子表格中一样,而不是与一个电子表格的内部工作表对话。那有意义吗?不过,感谢您的快速回复!看了你写的并引用了它,如果它只用于工作表,它将正常工作。
  • @GrahamPalermo 请编辑您的问题以澄清它。
  • 上面已经编辑过了,忘记说了,不好意思!
  • 看来我需要先学习一些关于触发器的课程,然后再学习自定义触发器。这比我预期的要先进得多。你有什么好的视频课程链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多