Javascript 如果不正确,如何实现

Javascript 如果不正确,如何实现,javascript,arrays,google-sheets,Javascript,Arrays,Google Sheets,情况: 下面的脚本将检查N列中的数据,如果N列中从第3行开始的任何单元格都有数据,脚本将提取数据并通过电子邮件发送给我。 但如果N列第3行开始的任何单元格没有数据,则在电子邮件正文中显示“亲爱的团队,目前有任何问题” 我该怎么做?如果没有,我会尝试使用,但我认为这不是正确的方法 我的脚本如下: function emailv1() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var Support = ss.getSheet

情况:

下面的脚本将检查N列中的数据,如果N列中从第3行开始的任何单元格都有数据,脚本将提取数据并通过电子邮件发送给我。
但如果N列第3行开始的任何单元格没有数据,则在电子邮件正文中显示“亲爱的团队,目前有任何问题”

我该怎么做?如果没有,我会尝试使用,但我认为这不是正确的方法

我的脚本如下:

function emailv1() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var Support = ss.getSheetByName("Shift");
  var lastrow = Support.getLastRow();

  var data1 = Support.getRange(3, 1, lastrow).getValues(); // XML ID
  var data2 = Support.getRange(3, 2, lastrow).getValues(); // SEQ NAME
  var data3 = Support.getRange(3, 14, lastrow).getValues(); // Notes
  var date2 = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm"); // Funtion Date + Format

  //var name = Browser.inputBox('Monitor', 'Ingrese el Horario Monitoreado', Browser.Buttons.OK_CANCEL);

/////////////////////// FOLLOWUP TABLE /////////////////////////
  var report = " "
  var supportTable ="";
  for(var i in data3)
  {
     if(data3[i]!="") 

      { supportTable += "<tr><td style='color:blue;padding:5px'>" + data1[i]
                                      + "</td><td style='padding:5px'>" + data2[i] 
                                      + "</td><td style='padding:5px'>" + data3[i] 
                                      + "</td></tr>";


  report ="Dears: <br><br><b>The following sequences were reported with faults:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>XML ID</th><th style='background-color:black;color:white'>SEQUENCER</th><th style='background-color:black;color:white'>Notes</tr>" + supportTable + "</table>";
      }
  }   

/////////////////////////////////////////////////////////////
/////////////////////// URL SHIFT ////////////////////////////
  var report4 = "<br><H1 align='center'><a href=https://docs.google.com/spreadsheets/d/XXXXXX>URL SHIFT</a></H1>"

/////////////////////////////////////////////////////////////

  MailApp.sendEmail("XXXX@gmail.com",
                    "[CUSTOMER NAME] Shift Change - " + date2, 
                    report,
                    {name: 'Automatic Emailer Script',
                    htmlBody: report +'<br><br><br><br>'+ report4});


  Support.getRange('N3:N133').clearContent(); // I want to put all cell in column N but I don't know what but for that razon I put a range.

}

你可以有这个功能

function isEmpty(str) {
    return (!str || 0 === str.length);
}
它将检查任何字符串是否为空。如果您的字符串有
,则此操作将失败。如果需要检查字符串是否为空或不包含空格,可以执行以下操作:

function isEmptyBrute(str) {
    str = str.replace(/\s/g, '');
    return (!str || 0 === str.length);
}
然后,您可以简单地执行以下操作:

//if it's empty it will return true
if(isEmpty(data3[i])) ...
工作示例:

从您的评论来看,您似乎想在代码中添加新功能。当N列为空时,您会收到一封电子邮件,其中包含“亲爱的团队,目前有任何问题”(但不确定这意味着什么!)

如果supportTable中有如下数据,我将代码修改为cehck:

if (supportTable == ""){
   report = "Dear Team, any problem for the moment" 
  } else {

    report ="Dears: <br><br><b>The following sequences were reported with faults:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>XML ID</th><th style='background-color:black;color:white'>SEQUENCER</th><th style='background-color:black;color:white'>Notes</tr>" + supportTable + "</table>";
  }
if(supportTable==“”){
报告=“亲爱的团队,目前有任何问题”
}否则{
report=“Dears:

报告了以下带有故障的序列:

XML IDSEQUENCERNotes“+supportTable+”; }
如果您愿意,您甚至可以在这里通过@AlGoreRythm使用isEmpty(str)。如果该变量中没有数据,则将电子邮件正文设置为上述字符串EDIT:getValues提供了一个2D数据数组,要访问数据,必须使用两个索引,而不是像以前那样使用一个(例如:data[I][0]而不是data[I])

函数emailv1(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var Support=ss.getSheetByName(“Shift”);
var lastrow=Support.getLastRow();
Logger.log(“LastRow:+LastRow”)
var data1=Support.getRange(3,1,lastrow-2).getValues();//XML ID
var data2=Support.getRange(3,2,lastrow-2).getValues();//SEQ NAME
var data3=Support.getRange(3,14,lastrow-2).getValues();//注释
var date2=Utilities.formatDate(新日期(),“GMT-3”,“dd/MM/yyyy HH:MM”);//功能日期+格式
//var name=Browser.inputBox('Monitor','ingree el-Horario monitorado',Browser.Buttons.OK\u CANCEL);
///////////////////////跟踪表/////////////////////////
var report=“”
var supportTable=“”;
用于(数据3中的变量i)
{  
如果(数据3[i][0]!=“”)
{supportTable+=“”+data1[i][0]
+“”+data2[i][0]
+“”+data3[i][0]
+ "";
}
否则{
Logger.log(“空行:+i)
}
}   
/////////////////////////////////////////////////////////////
///////////////////////URL移位////////////////////////////
//检查supoortTable中是否有任何数据,如果没有,请将文本设置为“亲爱的团队,目前有任何问题”
如果(supportTable==“”){
报告=“亲爱的团队,目前有任何问题”
}否则{
report=“Dears:

报告了以下带有故障的序列:

XML IDSEQUENCERNotes“+supportTable+”; } var report4=“
” Logger.log(报告) ///////////////////////////////////////////////////////////// MailApp.sendEmail(“xxxx@gmail.com", “[客户名称]换班-”+日期2, 报告,, {name:'自动电子邮件程序脚本', htmlBody:report+'



'+report4}); Support.getRange('N3:N133').clearContent();//我想把所有单元格都放在第N列中,但我不知道除了razon之外我放了一个范围。 }
else怎么样??Hi不起作用,我把第一个脚本放在上面,然后添加if(isEmpty(data3[i])report=“textxxxxx”;不工作给我发了一封空白的电子邮件只出现报告4。。。。如果N列中的任意单元格不为空,则脚本应为创建一个表并显示信息,但如果N列中的所有单元格都为空,则脚本应为report=“textxxxx”;体内的电子邮件应该是appear textxxwhoa什么?我正在查看您的
if/else
语句,您正在检查该语句的值是否为空。您似乎不知道如何检查
是否为空
,因此我决定帮助您制作一个函数,检查您提供的值是否为空,然后返回true。所以如果不是真的,你就不需要
。我已经为你添加了JSFIDLE。为什么邮件正文是空白的。。。如果你愿意,我可以分享一个例子电子表格哦。。。是的,你告诉我,但我正在尝试集成到我的脚本,我不知道为什么不作为spect工作。谢谢,但不工作。。。如果单元格不为空,脚本将创建一个表,但如果为空,脚本将显示一个部分不工作的文本,并通过电子邮件发送给我。。。我不知道为什么需要你的帮助,但还是不起作用。。。发送一封空白的电子邮件。。。也许问题出在第2行所有列都有数据。。。我不知道怎么办谢谢你的时间这个脚本从不看第2行。这将开始从row3Jogannathan Alagurajan获取数据,这里您有电子表格@LADServiceDesk Ok修改代码,应该可以:)。我试过用你寄给我的那张纸,为我工作。
if (supportTable == ""){
   report = "Dear Team, any problem for the moment" 
  } else {

    report ="Dears: <br><br><b>The following sequences were reported with faults:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>XML ID</th><th style='background-color:black;color:white'>SEQUENCER</th><th style='background-color:black;color:white'>Notes</tr>" + supportTable + "</table>";
  }
 function emailv1() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var Support = ss.getSheetByName("Shift");
  var lastrow = Support.getLastRow();
  Logger.log("LastRow: "+lastrow)
  var data1 = Support.getRange(3, 1, lastrow-2).getValues(); // XML ID
  var data2 = Support.getRange(3, 2, lastrow-2).getValues(); // SEQ NAME
  var data3 = Support.getRange(3, 14, lastrow-2).getValues(); // Notes
  var date2 = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm"); // Funtion Date + Format

  //var name = Browser.inputBox('Monitor', 'Ingrese el Horario Monitoreado', Browser.Buttons.OK_CANCEL);

/////////////////////// FOLLOWUP TABLE /////////////////////////
  var report = " "
  var supportTable ="";

  for(var i in data3)
  {  


     if(data3[i][0]!="") 

      { supportTable += "<tr><td style='color:blue;padding:5px'>" + data1[i][0]
                                      + "</td><td style='padding:5px'>" + data2[i][0]
                                      + "</td><td style='padding:5px'>" + data3[i][0] 
                                      + "</td></tr>";



      }
    else {

      Logger.log("Empty Row: " + i) 
    }
  }   

/////////////////////////////////////////////////////////////
/////////////////////// URL SHIFT ////////////////////////////
  // Check to see if supoortTable has any data in it, if not set the text to "Dear Team, any problem for the moment" 
  if (supportTable == ""){
   report = "Dear Team, any problem for the moment" 
  } else {

    report ="Dears: <br><br><b>The following sequences were reported with faults:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>XML ID</th><th style='background-color:black;color:white'>SEQUENCER</th><th style='background-color:black;color:white'>Notes</tr>" + supportTable + "</table>";
  }
var report4 = "<br><H1 align='center'><a href=https://docs.google.com/spreadsheets/d/XXXXXX>URL SHIFT</a></H1>"
Logger.log(report)
/////////////////////////////////////////////////////////////

  MailApp.sendEmail("xxxx@gmail.com",
                    "[CUSTOMER NAME] Shift Change - " + date2, 
                    report,
                    {name: 'Automatic Emailer Script',
                    htmlBody: report +'<br><br><br><br>'+ report4});


  Support.getRange('N3:N133').clearContent(); // I want to put all cell in column N but I don't know what but for that razon I put a range.

}