我最近采用了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”。
然后脚本不运行。它不能再发送邮件了。
关于合并脚本时可能出现什么问题的任何想法?
谢谢!
答案 0 :(得分:2)
如果将来自单独.gs
文件的所有代码忠实地复制到单个.gs
文件中,则没有理由停止运行脚本。 (虽然没有充分的理由这样做。实际上,将Romain在此示例中执行的代码分离是一种很好的做法。)
您知道吗?当包含多个'文件的脚本时运行,整个脚本被加载'并运行。对于机器来说,多个gs文件的存在是没有意义的 - 它们只是作者的便利。所有文件中的所有函数和全局变量都可用于每个文件中的代码。 执行函数范围之外的所有语句。 (因此,如果您在每个gs文件的顶部都有var sheet = SpreadsheetService.getActiveSheet()
之类的内容,它将执行多次 - 您只需要一次。)
此时你的选择是:
processRow()
和merge()
- 前者是发送电子邮件的唯一地方,后者执行主合并操作。由于观察到的问题是没有发送电子邮件,因此在此处开始调试是有意义的。关于合并脚本时可能出现什么问题的任何想法?
错位的大括号({
和}
)可以更改数据结构和功能。
gs中允许使用多个函数副本,但只执行 bottom 。在这种情况下,您不会收到任何错误消息,但事情可能无法按预期方式发挥作用。 (原始的YAMM2脚本没有重复的函数名称,但我在图库中看到过其他脚本。)
例如,如果您将伴侣gs文件中的函数复制到Code.gs中,然后注释掉原始文件中函数的BODIES,则调用任何这些函数将从伴随文件执行空版本,而不是Code.gs中的副本。
操作员错误。我们都去过那里。