Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script Google脚本编辑器getRange问题_Google Apps Script_Google Sheets_Google Sheets Api - Fatal编程技术网

Google apps script Google脚本编辑器getRange问题

Google apps script Google脚本编辑器getRange问题,google-apps-script,google-sheets,google-sheets-api,Google Apps Script,Google Sheets,Google Sheets Api,谢谢所有能帮忙的人 我正试图在电子表格的B栏中扫描“默认配送”一词,并向自己发送一封包含此人电子邮件的电子邮件,该电子邮件位于F栏的“range.getRow(),6”下,工作正常。我知道这是可行的,因为当我使用“getActiveCell”而不是“sheet.getRange(2,2700,2)”并选择包含“default shipping”的单元格时,我已经成功地向自己发送了一封电子邮件 我尝试了所有不同的方法,但我被卡住了,我不确定是否需要创建循环,但如果我可以避免这种情况,这将是最有益的

谢谢所有能帮忙的人

我正试图在电子表格的B栏中扫描“默认配送”一词,并向自己发送一封包含此人电子邮件的电子邮件,该电子邮件位于F栏的“range.getRow(),6”下,工作正常。我知道这是可行的,因为当我使用“getActiveCell”而不是“sheet.getRange(2,2700,2)”并选择包含“default shipping”的单元格时,我已经成功地向自己发送了一封电子邮件

我尝试了所有不同的方法,但我被卡住了,我不确定是否需要创建循环,但如果我可以避免这种情况,这将是最有益的

这是我复制的代码,但做了一些修改以满足我的需要

function sendemail() {

  var sheetNameToWatch = "Sheet1";
  var columnNumberToWatch = 2; 
  var valueToWatch = "Default shipping";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(2,2,700,2); // this is my problem

  var email = sheet.getRange(range.getRow(), 6).getValue();

  if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
    var emailAddress = "my@email.com";
    var subject = "Default Shipping Alert";
    var email = "Please check the order and contact customer if necesary by clicking this link! www.website.com/search:"+email+"";

    MailApp.sendEmail(emailAddress, subject, email);
  }
}

最好的解决方案是使用for循环。我对代码进行了一些清理,并做了一些修改。脚本的流程如下所述:

  • 您正在观看的工作表(“工作表1”)是通过以下方式获得的
  • 从获得的表格中,可以获得两个范围:
    columnB
    ,它保存发货状态,以及
    电子邮件
    的电子邮件地址。它们的大小(700行)和顺序都相同
  • 对于
    列B
    中的每条记录,将检查装运状态。如果它与
    valueToWatch
    匹配,则会生成一封电子邮件,并发送到
    emails
    数组中与其匹配的地址
  • 此外,在生成电子邮件正文时使用。这是为了确保最终的URL是有效的,并且符合标准

    函数sendmail(){ var sheetnametwatch=“Sheet1”; var columnNumberToWatch=2; var valueToWatch=“默认装运”; var sheet=SpreadsheetApp.getActive().getSheetByName(sheetNameToWatch); var columnB=sheet.getRange(2,columnNumberToWatch,700,1).getValues(); var=sheet.getRange(2,6700,1).getValues();
    对于(var i=0;iYou将需要一个循环。您应该查看官方的“最佳实践”应用程序脚本文档以及如何使用2D JavaScript数组。这就像是一种享受!非常感谢!尽管我不想将电子邮件发送到F行的电子邮件地址。这没什么大不了的,因为这很容易更改,因为我只是在
    var emailAddress=”中添加了我的个人电子邮件My@email.com"
    并在
    var emailBody
    的末尾调出
    emailAddress
    ,然后将其调换为
    emails[i]
    。如果我不清楚,那我就糟了。
    function sendemail() {
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getSheetByName('Sheet1');
      var rg=sh.getDataRange(); 
      var vA=rg.getValues();
      vA.forEach(function(r,i){
        if (r[1]="Default shipping") {
          var emailAddress = "my@email.com";
          var subject = "Default Shipping Alert";
          var msg = "Please check the order and contact customer if necesary by clicking this link! www.website.com/search:"+r[5];
          MailApp.sendEmail(emailAddress, subject, msg);
        }
      });
    }