Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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 如何检测行并相对转到下一列中的单元格?_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何检测行并相对转到下一列中的单元格?

Javascript 如何检测行并相对转到下一列中的单元格?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我写了一个代码,可以从google sheet自动发送邮件。每天如果列状态有单元格“计时”,我想发送电子邮件。它是有效的。但我不想给前几天收到邮件的人发送邮件,所以我创建了一个检查,在发送邮件后用“发送”来填充另一列。它失败了。我无法检测到包含emailaddress的行,该程序用于相对其他列插入“sent” 你能帮我吗 function sendEmails() { var she = SpreadsheetApp.getActiveSpreadsheet().getSheetByName

我写了一个代码,可以从google sheet自动发送邮件。每天如果列状态有单元格“计时”,我想发送电子邮件。它是有效的。但我不想给前几天收到邮件的人发送邮件,所以我创建了一个检查,在发送邮件后用“发送”来填充另一列。它失败了。我无法检测到包含emailaddress的行,该程序用于相对其他列插入“sent”

你能帮我吗

function sendEmails() {
  var she = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("basic");
  var startRow = 2;  
  var numRows = 1000;   
  var dataRange = she.getRange(startRow, 1, numRows, 1000)
  var data = dataRange.getValues();
  var text = she.getRange("L2"); 
  var message = text.getValues();
  for (i in data) {
    var col = data[i];
    var emailAddress = col[1];    
    var subject = "Project reminder";
    var status = col[3];
    var check = col[8];
    if (status == "Timing"){
      MailApp.sendEmail(emailAddress, subject, message) && 
check.setValue('sent');} //moment when I want to insert 'sent'
  }
}
代码的更新部分:

for(var a=0; a < values.length; a++ ){
   if(values[a][1] == "not" && values[a][3] == "Timing"){
     var emailAddress = values[a][0];
     Logger.log("NEED TO SEND AN EMAIL TO  " + values[a][0]);
     var message = messag + " " + values[a][5];
     MailApp.sendEmail(emailAddress, subject, message);
    }
   }
}
for(var a=0;a
这是一个适用于您的用例的小型解决方案。只是玩一下它,了解它是如何工作的。
(0,0)、(0,1)等
表示数组的索引号

这是样品表

函数checkIfSent(){
var ss=SpreadsheetApp.openById(“123454567890abcdefghi”).getSheetByName(“12345”);
var值=ss.getSheetValues(1,1,6,2);
对于(变量i=0;i

如果“检查”列下的值标记为“否”,您可以将您的方法放置为向此人发送电子邮件(
values[i][0]
)。

谢谢,您的解决方案给了我这个想法。但在两个维度上的迭代是不必要的。我更新了代码,但仍然不能使用setValue(“sent”)
function checkIfSent(){

  var ss = SpreadsheetApp.openById("123454567890abcdefghi").getSheetByName("12345");

  var values = ss.getSheetValues(1, 1, 6, 2);

  for(var i=0; i < values.length; i++ ){
    for(var j=0; j < values.length; j++ ){
      if(values[i][j] == "NOT"){
         Logger.log("NEED TO SEND AN EMAIL TO  " + values[i][0]);
         //Send an Email method here()
         //. . .
      }
    }
  }
}