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.
}