【问题标题】:Run Google Sheets script when formula updates cell公式更新单元格时运行 Google 表格脚本
【发布时间】:2020-04-14 12:37:21
【问题描述】:

经过大量搜索,我已经解决了问题的第一部分:我找到了以下脚本,该脚本从一个范围复制数据并将其添加到另一个工作表中。

但是,它从中复制的范围将通过公式自动更新。那么,我的下一个挑战是 - 如何让脚本在单元格更改时运行?

我相信有一种方法可以“观察细胞”的变化,但我真的不是很技术,所以我无法弄清楚!

可能会增加复杂性 - 我相信“编辑时”脚本仅在电子表格打开时运行,对吗?如果是这样,我还需要弄清楚如何让脚本运行以按时间间隔检查新值。

这是我当前的脚本:

 function moveValuesOnly() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var source = ss.getRange("Sheet1!F1:H3");
    var destSheet = ss.getSheetByName("Feuil2"); // Déterminer l'emplacement de la première ligne vide. var destRange = destSheet.getRange(destSheet.getLastRow()+1,1); source.copyTo (destRange, {contentsOnly: true}); source.clear (); 
    }

【问题讨论】:

  • onEdit 即使电子表格关闭也会运行,但它仅在手动编辑(通过键入)而不是公式更新时才有效。如果您希望脚本在更新范围时自动运行 - 您需要使用 =importrangeonChange 的 workaorund - 请参阅 herehere
  • 也许手动/在时间驱动的触发器上运行脚本会更容易,但使用动态检索的更新范围定义?
  • 非常感谢您的意见!我认为时间驱动的触发器可能是最好的方法,最好将它保存在一个电子表格上,而不是使用 importrange (我认为当表格关闭时它有一个内置的延迟)。你有没有机会知道一个可以实现这一目标的脚本?

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


【解决方案1】:

如何在时间驱动的触发器上运行脚本:

  • 您可以使用已有的脚本
  • 您可以通过以下方式将时间驱动触发器绑定到它
    • 继续Edit -> Current Project's triggers


  • 选择create new trigger


  • 指定要绑定触发器的函数
  • 指定触发器应为time-driven
  • 根据需要选择type of time based triggerinterval
  • 点击保存

【讨论】:

  • 太好了,非常感谢您的帮助!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多