当前位置: 首页 > 知识库问答 >
问题:

如何确定(谷歌应用程序)脚本是否正在新工作表上执行?

吕霖
2023-03-14

我已经为GoogleSheets编写了一个GoogleApps脚本,但它需要运行不同的代码,这取决于它是在“新”工作表上运行,还是在“旧工作表”格式的工作表上运行。

它是在“旧工作表”上编写的,但我希望在Google将所有工作表更新为“新工作表”格式时保持兼容性。(这特别适用于向用户显示警报框:https://developers.google.com/apps-script/guides/dialogs#alert_dialogs)

共有2个答案

后阳炎
2023-03-14

我认为你可以通过检查文档的创建日期来相当可靠地做到这一点。

杜俊楚
2023-03-14

这感觉有点像一个预兆,最终可能会停止工作,但您可以尝试调用新工作表不支持的函数之一。例如,通过newTrigger以编程方式创建触发器。

新工作表中包含的代码:

function onOpen() {

  try {

    var everySixHours = ScriptApp.newTrigger("runCommand")
        .timeBased()
        .everyHours(6)
        .create();

  } catch(e) {

      Logger.log(e);
      Logger.log('You are using a new Google sheet');
  }

  Logger.log(everySixHours);

}

function runCommand() {
  Logger.log('runCommand()');
}

刷新工作表时,在日志中输出:

[14-08-10 22:15:07:767 BST] Exception: You do not have permission to call newTrigger
[14-08-10 22:15:07:767 BST] You are using a new Google sheet
[14-08-10 22:15:07:767 BST] undefined
 类似资料:
  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!

  • 我正在使用一段谷歌脚本从一个谷歌工作表复制到另一个谷歌工作表,还做了一些列和数据操作(所以它不仅仅是一个直接的副本)。 这段代码的灵感来源于这个问题:事件触发器根据两列中的值将行移动到其他两个工作表之一 不幸的是,当您通过高亮显示多个单元格并按空格键一次选中多个复选框时,OneEdit对象似乎只会检测到第一个单元格正在编辑,而其他单元格则没有被编辑。 我通过以下方式对此进行了测试: Browser

  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 今天我一直在玩谷歌应用程序脚本,我正在尝试编写一些自定义电子表格函数。我做了一些搜索,但找不到我的问题的答案。 我知道,在谷歌电子表格中,您可以在电子表格的单元格中使用ImportRange,如下所示: 我的问题是,有没有可能在谷歌应用程序脚本中做类似的事情?如果有,怎么做? 我想从另一个电子表格上的工作表(而不是脚本将驻留的电子表格上的工作表)导入一系列单元格。

  • 对于我正在开发的谷歌应用程序脚本,我需要过滤掉那些迟交的学生提交来降低他们的成绩。 根据Google的文档,我假设这是通过使用classroom.courses.coursework.studentsubmissions.list得到的,但我不知道如何将late参数应用到列表中,以便只得到迟交作业的人。

  • 我运行一个脚本在谷歌表脚本编辑器,以触发脚本我使用onChange在当前项目的触发器,使用特定的功能- 值得一提的是,我与另外3个拥有编辑权限的成员一起使用工作表,他们不时更改数据,我构建了脚本并激活了触发器。 当我更改工作表中的任何内容时,我会收到警报(触发器已打开),但当其他成员更改数据时,触发器不起作用。 我错过了什么? 谢谢