gpt4 book ai didi

google-apps-script - 如何减少我的 Google Apps 脚本使用的 "computer time"?

转载 作者:行者123 更新时间:2023-12-02 04:24:17 24 4
gpt4 key购买 nike

我遵循了 Hugo Fierro 关于添加 Google Apps 脚本以从 Google 表格发送电子邮件的教程。图特位于 https://developers.google.com/apps-script/articles/sending_emails .

我自定义了脚本:

1) 我用“GmailApp.sendEmail”替换了“MailApp.sendEmail”API,因为我收到身份验证错误并且电子邮件没有发送。 Gmail API 运行良好。

2) 我添加了一个选项,使用“DriveApp.getFileById”在每封邮件中发送 PDF 附件。

3) 我在 IF 语句中添加了第二个条件,以在发送前检查 PDF 文档是否可用(通过引用工作表中的列)。

问题是,如果脚本仅引用 5 行,则它会在 30 秒内完成处理。当我尝试处理 10 行或更多行时,处理时间显着增加。

我用“sheet.getLastRow()”替换了“sheet.getRange”,试图减少脚本引用的行数。

var READY = 'READY';
var SENT = 'SENT';

function sendEmails() {

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Email'); // Get the active spreadsheet, then get the "Email" sheet
var startRow = 2; // Select data row to start at
var endRow = sheet.getLastRow(); // Get the last row in the sheet
var data = sheet.getRange(startRow, 1, endRow, 6).getValues(); // Get the range of cells, then get the values

for (var i = 0; i < data.length; ++i) {
var row = data[i];
var email = row[0]; // Column 1
var subject = row[1]; // Column 2
var message = row[2]; // Column 3
var attachment = DriveApp.getFileById(row[3]); // Returns the attachment file ID
var emailReady = row[4]; // Column 5
var emailSent = row[5]; // Column 6
var name = 'VFISA'; // Set "from" name in email
var bcc = 'myaddress@gmail.com'; // Blind carbon copy this email address
if (emailReady==READY && emailSent!==SENT) { // Prevents sending duplicates, waits for attachment cell to confirm available
GmailApp.sendEmail(email, subject, message,{
name: name,
bcc: bcc,
htmlBody: message,
attachments: attachment
});
sheet.getRange(startRow + i, 6).setValue(SENT); // Set the cell in column F to "SENT"
SpreadsheetApp.flush(); // Make sure the cell is updated right away in case the script is interrupted
}
}
}

我希望脚本运行得更快。我得到的错误是“服务在一天内使用了过多的计算机时间”。当我引用 20 行时,运行最多需要 4 分钟。

最佳答案

DriveApp.getFileById 导致每一行 需要大约 5 秒的时间来执行。我删除了它,现在 整个脚本 的执行时间不到 1 秒。

我没有将 PDF 添加为附件,而是使用了基于文件 ID 的内联链接(根据 Alan Wells 的建议)。

关于google-apps-script - 如何减少我的 Google Apps 脚本使用的 "computer time"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56314113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com