合并Google Script gs文件

时间:2013-08-12 11:23:17

标签: google-apps-script

我最近采用了googleapps开发者博客的邮件合并脚本。

http://googleappsdeveloper.blogspot.hk/2011/10/4-ways-to-do-mail-merge-using-google.html

中的脚本2

脚本中有4个gs文件,其中一个是不必要的,我只是评论整个脚本,它运行得非常好。

然后我尝试将所有内容从“Standard.gs的UI”复制到“Code.gs”。 在这之后,我删除了“用于Standard.gs的UI”。

然后脚本不运行。它不能再发送邮件了。

关于合并脚本时可能出现什么问题的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

如果将来自单独.gs文件的所有代码忠实地复制到单个.gs文件中,则没有理由停止运行脚本。 (虽然没有充分的理由这样做。实际上,将Romain在此示例中执行的代码分离是一种很好的做法。)

您知道吗?当包含多个'文件的脚本时运行,整个脚本被加载'并运行。对于机器来说,多个gs文件的存在是没有意义的 - 它们只是作者的便利。所有文件中的所有函数和全局变量都可用于每个文件中的代码。 执行函数范围之外的所有语句。 (因此,如果您在每个gs文件的顶部都有var sheet = SpreadsheetService.getActiveSheet()之类的内容,它将执行多次 - 您只需要一次。)

此时你的选择是:

  • 确保您的数据仍然有效。也许代码没有错。
  • 查看运行失败后的执行记录,看看是否有线索出错的地方。至少,你知道它停在哪里。
  • 检查您的手动合并,与原始代码进行比较,以确保您已正确复制代码。如果你有第二眼,那就更好了。
  • 使用调试器或Logger仔细浏览processRow()merge() - 前者是发送电子邮件的唯一地方,后者执行主合并操作。由于观察到的问题是没有发送电子邮件,因此在此处开始调试是有意义的。
  • 回到原版并重新开始。
  

关于合并脚本时可能出现什么问题的任何想法?

  • 错位的大括号({})可以更改数据结构和功能。

  • gs中允许使用多个函数副本,但只执行 bottom 。在这种情况下,您不会收到任何错误消息,但事情可能无法按预期方式发挥作用。 (原始的YAMM2脚本没有重复的函数名称,但我在图库中看到过其他脚本。)

    例如,如果您将伴侣gs文件中的函数复制到Code.gs中,然后注释掉原始文件中函数的BODIES,则调用任何这些函数将从伴随文件执行空版本,而不是Code.gs中的副本。

  • 操作员错误。我们都去过那里。