【问题标题】:Google Script: getActiveSheet() when there is no Active Sheet?谷歌脚本:没有活动工作表时的 getActiveSheet()?
【发布时间】:2020-07-06 23:39:52
【问题描述】:

我已经为此工作了几天,但我找不到任何关于这个问题的答案。 我没有程序员背景,所以对你们中的一些人来说这可能是一个简单的问题。

问题: 我有 5 个 Google 表单,它们在 1 个主 Google 工作表中填写 5 个不同的工作表。

--> Google Form 1 填写完毕后,sheet1 中多了一个新行
--> Google Form 2 填写完毕后,sheet2 中会出现新的一行
--> Google Form 3 填写完毕后,sheet3 中多了一行
--> 当Google Form 4填写完毕后,sheet4中多了一行
--> 当Google Form 5填写完毕后,sheet5中多了一个新行

现在,当向每张纸添加新行时,我需要能够运行一些脚本(不同的)。

想法是:

--> 当向 sheet1 添加新行时,执行此操作。
--> 当向 sheet2 添加新行时,执行此操作。 .
.
.

我尝试过这样的事情(见下文)。但它不会返回任何内容,因为在填写谷歌表单时没有“Activesheet”并自己向谷歌表单添加新行。

function onChange(event) {
  
  var s = event.source.getActiveSheet(); 
  var sName = s.getName();
 
  
  Browser.msgBox(sName);

}   

问题:

换句话说,您知道如何获取由 google 表单编辑的工作表,以便在每张工作表被修改时运行特定脚本吗?

【问题讨论】:

    标签: google-sheets google-sheets-api


    【解决方案1】:

    onChange 触发器不会在表单提交时触发,请改用 FormSubmit 触发器

    相关事件对象指定here

    事件对象source不可用,但您可以将事件对象rangegetSheet()结合使用。

    示例:

    function onChange(event) {
     
      var s = event.range.getSheet();
      var sName = s.getName();  
      Browser.msgBox(sName);
    
    } 
    

    【讨论】:

    • 感谢您的帮助。通过进一步的研究,我发现了如何直接将脚本添加到 Google 表单中。将脚本直接链接到每个单独的 Google 表单更简单。但再次感谢您的评论!
    • 是的,这也是可能的!请记住,可用的事件对象会有所不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多