Google apps script 发送未解决问题的电子邮件(根据其他单元格中的文本发送邮件)

Google apps script 发送未解决问题的电子邮件(根据其他单元格中的文本发送邮件),google-apps-script,Google Apps Script,我正在使用google sheet跟踪几个部门的未决问题。 我试图做一个简单的代码发送电子邮件的开放问题的负责人 它运行不正确,并且经常出现错误。你能帮我更正这个代码吗 谷歌工作表链接- 我使用下面的代码 function sendEmails() { var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1"); //get the sheet "Sheet1"

我正在使用google sheet跟踪几个部门的未决问题。 我试图做一个简单的代码发送电子邮件的开放问题的负责人

它运行不正确,并且经常出现错误。你能帮我更正这个代码吗

谷歌工作表链接-

我使用下面的代码

function sendEmails() {
  var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1"); //get the sheet "Sheet1"
  var data = sSheet.getRange(5,1, sSheet.getLastRow(), sSheet.getLastColumn()).getValues(); //get the values of your table, without the header
  for (var i = 0; i < data.length; i++); 
    var sendTO = e.values[3];
    var status = data[i];
    var subject = "test";
    var message = "this is test";
    if(status='Open') { 
        MailApp.sendEmail(sendTO,subject, message)
    }
  } 
}
函数sendEmails(){ var sSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“sheet1”);//获取工作表“sheet1” var data=sSheet.getRange(5,1,sSheet.getLastRow(),sSheet.getLastColumn()).getValues();//获取表的值,不带标题 对于(var i=0;i您的代码中有多个错误:

  • 当实际工作表的名称为
    sheet1
    时,您将
    getSheetByName
    sheet1
    一起使用

  • 您正在使用
    e.values
    ,但您尚未在代码中的任何地方定义
    e

  • 您将状态定义为
    data[i]
    ,但这将生成包含所有信息的行,而不仅仅是与
    状态
    列对应的单元格

因此,我建议您尝试以下代码片段:

一小条 函数sendEmails(){ var sSheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);//获取工作表“Sheet1” var emails=sSheet.getRange(2,3,sSheet.getLastRow()-1,1.getValues(); 对于(var i=0;i 解释 不需要检索包含所有数据的所有列,因此在本例中,只检索了
Emails
列。由于您的工作表有一个标题行,为了检索正确的值,使用了
getLastRow()-1
。此外,由于在调用工作表方法时,索引从1开始,为了调用适当的范围
i+2
,已经使用了(+1表示工作表索引,+1表示标题行)。之后,如果相应的状态为“打开”,则发送电子邮件

参考文献
  • )


能否提供您收到的错误?此外,您共享的工作表不可访问-您可以更新它的权限吗?另外,
sendmails
功能是否附带触发器?您好。。我只是更新了你的访问权限。它的showing me error“.e未定义(第7行,文件“代码”),并且尚未为此脚本设置触发器。我想为此提醒电子邮件设置每日triggers。
function sendEmails() {
  var sSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); //get the sheet "Sheet1"
  var emails = sSheet.getRange(2,3, sSheet.getLastRow()-1, 1).getValues(); 
  for (var i = 0; i < emails.length; i++) {
    var subject = sSheet.getRange(i+2,2).getValue();
    var message = "this is test";
    var status = sSheet.getRange(i+2,5).getValue();
    console.log(emails[i]);
    if (status == "Open") {
     MailApp.sendEmail(emails[i].toString(),subject, message)
    }
  } 
}