Javascript 通过Google Sheet | Google Apps脚本生成的数组进行交互
我是谷歌脚本的新手,我在工作中学习。我正在尝试做的是一个脚本,它基于google工作表,检查电子邮件的主题是否包含其中一行中的字符串,并将附件保存在google驱动器上。这个文件夹的ID也在同一个google工作表上 因此,结构将是: A列 B栏 C列 x EXE2928 折页29382938 x exec823 折页29383994 x EX3948 折页55154988Javascript 通过Google Sheet | Google Apps脚本生成的数组进行交互,javascript,arrays,google-apps-script,google-sheets,Javascript,Arrays,Google Apps Script,Google Sheets,我是谷歌脚本的新手,我在工作中学习。我正在尝试做的是一个脚本,它基于google工作表,检查电子邮件的主题是否包含其中一行中的字符串,并将附件保存在google驱动器上。这个文件夹的ID也在同一个google工作表上 因此,结构将是: A列 B栏 C列 x EXE2928 折页29382938 x exec823 折页29383994 x EX3948 折页55154988 此答案假设您正在使用GmailApp检索电子邮件。此外,它只能被视为一个指导原则,因为我没有花时间测试和度量代码 铭记 工
此答案假设您正在使用
GmailApp
检索电子邮件。此外,它只能被视为一个指导原则,因为我没有花时间测试和度量代码
铭记
工具
要优化代码,首先需要的是工具
最重要的工具是测量某个部件运行所需的时间。您可以使用console.time
和console.timeEnd
()执行此操作。此方法将允许您测量它们之间的时间
对于不需要应用程序脚本类或方法的部分代码,您可以在本地测试它们,以使用任何其他工具测量性能。请注意,它可能无法完美地转换为谷歌应用程序脚本
知道你想要实现什么
什么足够快?这是你开始之前需要知道的事情。这通常是由于您首先要优化的原因而指定的
最佳做法
阅读。它有很多建议几乎总是正确的
了解你的系统
很多时候,你甚至没有考虑到系统上的约束
例如:如果要搜索的字符串始终位于主题的开头,则可以生成执行效果更好的更具体的代码
另一个例子:这种线程是只有一封电子邮件,还是有多封?这会大大改变代码
衡量一切
不要想当然。量。有时候,看起来应该慢一点的事情会快一点。优化越多,这一点就越正确。强烈建议从中获取当前时间和工作的基线
先测试一下简单的
不要在尝试复杂的代码时得意忘形。有时简单的代码会更快。有时速度不快,但已经足够快了
奇怪也可以是好事
试着跳出框框思考。有时候奇怪的解决方案是最快的。这可能会降低可读性
一个例子是生成一个包含所有值的正则表达式,并使用它来检测它是否包含一个值以及包含哪个值。这可能会更慢或更快,但值得一试
const r=/(EXE2928 | EXE823 | EX3948)///动态生成
常数m=r.match(字符串)
如果(m!=null){
const key=m[1]//key是包含在主题上的值
}
一些想法
获取最少的数据,并且只获取一次
您只需要B列(要查找的文本)和C列(要发送的文件夹)的映射即可完成所需的操作。只需获取这些数据。您将需要迭代,因此无需转换数据。也跳过标题
var mapping = sheet.getRange(`B2:C`).getValues()
还要尽量限制你阅读的Gmail线程的数量
整理电子邮件
我会尝试将电子邮件移动到更容易理解的数据中进行迭代
在执行时更改
我不知道这段代码什么时候执行,但更改它可能会更改执行时间
换乘台
谷歌应用程序脚本可能不是最好的使用平台。直接从客户机库(有一个python库)调用API可能更好
工具书类