Google apps script 如何在图纸中指定子范围以执行SendEmail
这里没有。我正在尝试使用包含许多姓名和电子邮件地址的数据库自动发送电子邮件,但我不希望一次发送数据库中的所有电子邮件,而是希望在特定时间使用唯一触发器(或脚本?)指定要发送的姓名和电子邮件的范围(例如,发送到第2-15行中的电子邮件地址),然后再发送另一个范围的电子邮件(例如,第16-30行)使用另一个唯一触发器或脚本等(这是由于电子邮件限制)。我使用的脚本设置为一次发送数据库中的所有电子邮件Google apps script 如何在图纸中指定子范围以执行SendEmail,google-apps-script,google-sheets,Google Apps Script,Google Sheets,这里没有。我正在尝试使用包含许多姓名和电子邮件地址的数据库自动发送电子邮件,但我不希望一次发送数据库中的所有电子邮件,而是希望在特定时间使用唯一触发器(或脚本?)指定要发送的姓名和电子邮件的范围(例如,发送到第2-15行中的电子邮件地址),然后再发送另一个范围的电子邮件(例如,第16-30行)使用另一个唯一触发器或脚本等(这是由于电子邮件限制)。我使用的脚本设置为一次发送数据库中的所有电子邮件 function sendEmail() { var ss = SpreadsheetApp
function sendEmail() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Sheet1');
var sheet2=ss.getSheetByName('Sheet2');
var subject = sheet2.getRange(2,1).getValue();
var n=sheet1.getLastRow();
for (var i = 2; i < n+1 ; i++ ) {
var emailAddress = sheet1.getRange(i,2).getValue();
var name=sheet1.getRange(i,1).getValue();
var message = sheet2.getRange(2,2).getValue();
message=message.replace("<name>",name);
GmailApp.sendEmail(emailAddress, subject, message, {name:"WordProfessors"});
}
}
函数sendmail(){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('sheet1');
var sheet2=ss.getSheetByName('sheet2');
var subject=sheet2.getRange(2,1).getValue();
var n=sheet1.getLastRow();
对于(变量i=2;in=Math.min(sheet1.getLastRow(),10)
10封电子邮件我想提醒您避免在循环中调用电子表格API函数,因为这样会降低性能。相反,您应该获取单元格的整个范围
const range=sheet1.getRange(1,1,n,2)
,并在该范围内执行操作,例如获取值的2D数组:range.getValues()
并循环使用它们。如果它们不都是连续的,您可以使用范围列表,否则只需使用范围欢迎。请按照Hi Sunny中的建议添加您的搜索/研究工作的简要说明,谢谢您的回答:我已经实现了您描述的方法,效果很好。我对您对usi的建议有一个问题使用2D数组而不是在电子表格上循环。我真的不明白如何或为什么,我想我需要对如何实现该方法进行更多的研究。这样做是否可以解释为什么我在运行函数时会出现错误:“一天内调用的服务次数太多?”这是否超过了每日配额?看起来很奇怪它发生在使用循环功能发送100封电子邮件后。您可能已超过向多个收件人发送电子邮件的报价。请参阅。我建议您使用升级帐户类型或使用多个帐户。