Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Google Sheet | Google Apps脚本生成的数组进行交互_Javascript_Arrays_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 通过Google Sheet | Google Apps脚本生成的数组进行交互

Javascript 通过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检索电子邮件。此外,它只能被视为一个指导原则,因为我没有花时间测试和度量代码 铭记 工

我是谷歌脚本的新手,我在工作中学习。我正在尝试做的是一个脚本,它基于google工作表,检查电子邮件的主题是否包含其中一行中的字符串,并将附件保存在google驱动器上。这个文件夹的ID也在同一个google工作表上

因此,结构将是:

A列 B栏 C列 x EXE2928 折页29382938 x exec823 折页29383994 x EX3948 折页55154988
此答案假设您正在使用
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可能更好

工具书类

这就是我的理解:你有一个电子邮件列表(我猜是收件箱)。您希望提取电子邮件的附件并将其保存到正确的驱动器文件夹中。为此,您需要将主题(B列)中包含的字符串列表映射到要发送到的文件夹ID(C列)。您有一个脚本已经可以运行,但您希望对其进行优化。是吗?是的,非常正确。我希望通过使用B列和C列上的信息来保存附件来进行优化。我的目标是使用谷歌表单内容作为脚本上的数组,并通过它进行交互。你说过你不熟悉应用程序脚本。你以前编程过吗?如果是的话,你以前优化过代码吗?我知道一点javascript,但主要是Python。所以我会修改代码以符合我的目的,包括在Google脚本中,但我在这方面做得不好,