Javascript 获取Google工作表脚本以跳过空行?
我有一个脚本,可以从谷歌表单发送电子邮件。工作表中的数据由google表单填充。工作表中的一些字段使用数组公式向工作表中添加其他数据示例:工作表中的数组公式填充字段:Javascript 获取Google工作表脚本以跳过空行?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个脚本,可以从谷歌表单发送电子邮件。工作表中的数据由google表单填充。工作表中的一些字段使用数组公式向工作表中添加其他数据示例:工作表中的数组公式填充字段: =ArrayFormula(IF(ROW(A:A)=1,"link",VLOOKUP($C:C,array!$A$2:$C$9000,3,FALSE))) 这会导致在没有用户提交数据的行中显示“#N/A”。我同意,但这会导致脚本运行时间过长。当用户提交数据时,时间戳被放置在第一列中。如果脚本为空,我可以用它来让脚本跳到停止吗?现
=ArrayFormula(IF(ROW(A:A)=1,"link",VLOOKUP($C:C,array!$A$2:$C$9000,3,FALSE)))
这会导致在没有用户提交数据的行中显示“#N/A”。我同意,但这会导致脚本运行时间过长。当用户提交数据时,时间戳被放置在第一列中。如果脚本为空,我可以用它来让脚本跳到停止吗?现在,我让脚本检查1000行,但理想情况下它会检查行的时间戳,如果没有时间戳,就停止
/**
* Add a menu item that calls this script
*/
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [{
name: "Send Email",
functionName: "uiSendEmail"
}];
ss.addMenu("SCCCounseling", menu);
}
var EMAIL_SENT = "EMAIL_SENT";
/**
* Send the e-mail to everyone listed in the spreadsheet
*/
function uiSendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var timestamp = row[0];
var username = row[1];
var counselor = row[2];
var date = row[3];
var sName = row[4];
var wNum = row[5];
var toemail = row[6];
var sLName= row[7];
var pin = row[8];
var link = row[9];
var cMail = row[10];
var emailSent = row[11];
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + sLName + " " + wNum + " ";
var emailBody = "Online Counseling Appointment " + " - " + sName + " " + sLName + " " + wNum +
"\n\nHello " + sName +
"\n\n\nYou are scheduled for an online counseling appointment for Sacramento City College: " +
"\n\n\nDate: " + date +
"\n\nPlease follow the instructions below at least one day before your appointment to make " +
"\nsure that your computer is ready. " +
"\n\nIf your computer is not ready, you will not be able to " +
"\nparticipate in online counseling. " +
"\n\nTo cancel your appointment, please email: " +
"\n\nCounselor: " + counselor + " at " + cMail +
"\n\nYou will be required to show photo identification at the start of the appointment to verify " +
"\nyour identity. " +
"\n\n\nONE DAY BEFORE YOUR APPOINTMENT " +
"\n\nGo to the following link to test your computer readiness one day before your " +
"\nscheduled online counseling appointment: " +
"\n\nhttp://www.cccconfer.org/support/supportReadiness.aspx " +
"\n\n\nFIVE MINUTES BEFORE YOUR APPOINTMENT: " +
"\n\nGo to the following link to connect to the online counseling appointment and the " +
"\ncounselor will join you: " + link +
"\n\n\nIf you want to use the phone for audio: " +
"\n\nTelephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821 " +
"\n\nStudent PIN: " + pin +
"\n\n\nFOR ASSISTANCE CONNECTING" +
"\n\nContact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"\n\nPhone: 1-760-744-1150 ext 1537 or 1554 " +
"\n\nEmail: clientservices@cccconfer.org " +
"\n\n\nThank you " + sName;
var htmlBody = "<b>Online Counseling Appointment Confirmation" + " -</b> " + " - " + sName + " " + sLName + " " + wNum +
"<br/><br/><br/>" + "Hello " + sName + ", <br/><br/>" + "You are scheduled for an online counseling appointment for Sacramento City College: <i>" +
"<br/><br/><br/>" + "<b>Date: " + date + "<br/><br/>" + "</b><br/>" + "</i><br/>Please follow the instructions below <b>at least one day before</b> your appointment to make sure that your computer is ready." +
"<br/><br/><i>If your computer is not ready, you will not be able to participate in online counseling.</i> " + "<br/><br/> To cancel your appointment, please email: " +
"<br/><br/><font color=\"red\">Counselor:</font> " + counselor + " at " + cMail + "<br/><br/><br/>You will be required to show photo identification at the start of the appointment to verify your identity. " +
"<br/><br/><br/><b>ONE DAY BEFORE YOUR APPOINTMENT:</b> " + "<br/><br/>➢ Go to the following link to test your computer readiness one day before your scheduled online counseling appointment: " +
"<br/><br/>http://www.cccconfer.org/support/supportReadiness.aspx " +
"<br/><br/><br/><b>FIVE MINUTES BEFORE YOUR APPOINTMENT:</b>" +
"<br/><br/>➢ Go to the following link to connect to the online counseling appointment and the counselor will join you (link to counselor online room). " +
"<br/><br/> " + link +
"<br/><br/>➢ If you want to use the phone for audio: " +
"<br/><ul><li>Telephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821</li><li>Student PIN: " + pin + "</li></ul>" +
"<br/><br/><br/><b>FOR ASSISTANCE CONNECTING</b>" +
"<br/><br/>Contact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"<br/><br/>Phone: 1-760-744-1150 ext 1537 or 1554 " +
"<br/><br/>Email: clientservices@cccconfer.org " +
"<br/><br/><br/>Thank You! " + sName;
var optAdvancedArgs = {name: "SCC Counseling", htmlBody: htmlBody};
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + wNum + " ";
MailApp.sendEmail(toemail, subject, emailBody, optAdvancedArgs);
sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}
/**
*添加调用此脚本的菜单项
*/
函数onOpen(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
变量菜单=[{
名称:“发送电子邮件”,
函数名:“uiSendEmail”
}];
ss.addMenu(“SCCCounseling”,菜单);
}
var EMAIL_SENT=“EMAIL_SENT”;
/**
*将电子邮件发送给电子表格中列出的每个人
*/
函数uiSendEmail(){
var sheet=SpreadsheetApp.getActiveSheet();
var startRow=2;//要处理的第一行数据
var numRows=1000;
var dataRange=sheet.getRange(startRow,1,numRows,1000)
//获取范围中每行的值。
var data=dataRange.getValues();
对于(变量i=0;i
”+“你好”+sName+”,
“+”您计划在萨克拉门托城市学院接受在线咨询预约:“+
“+”日期:“+Date+”
“+”
“+”
“+”
请在预约前至少一天按照以下说明操作,以确保您的计算机已准备就绪。”+
“
如果您的计算机未准备好,您将无法参加在线咨询。”+“
若要取消您的约会,请发送电子邮件:”+
“
咨询师:“+cMail+”
您需要在约会开始时出示带照片的身份证明,以验证您的身份。”+
约会前一天:“+”
➢ 在计划的在线咨询预约前一天,转到以下链接测试您的计算机就绪情况:+
“
http://www.cccconfer.org/support/supportReadiness.aspx " +
“
约会前五分钟:”+
“
➢ 转到以下链接以连接到在线咨询预约,咨询师将加入您(链接到咨询师在线室)。”+
“
”+链接+
“
➢ 如果您想使用手机播放音频:+
电话会议线路:719-785-4469,免费电话:1-888-450-4821+
“
用于协助连接”+
“
联系CCC Confer客户服务部,周一至周五上午8点至下午4点”+
“
电话:1-760-744-1150分机1537或1554”+
“
电子邮件:clientservices@cccconfer.org " +
“谢谢你!”+sName;
var optadvancedags={name:“SCC咨询”,htmlBody:htmlBody};
如果(emailSent!=EMAIL_SENT){//防止发送重复的邮件
var subject=“在线咨询预约确认-”+sName+”+wNum+”;
MailApp.sendmail(toemail、subject、emailBody、optadvancedags);
sheet.getRange(startRow+i,12).setValue(已发送电子邮件);
//确保立即更新单元格,以防脚本中断
SpreadsheetApp.flush();
}
}
}
创建一个简单的函数来测试\NA代码>:
function checkForNa() {
var theVal = SpreadsheetApp.getActiveSpreadsheet().getRange("A1").getValue();
if (theVal === "#NA!") {
Logger.log('it's NA');
return;
};
Logger.log('There is data. The code continued');
};
故意造成#NA代码>错误,然后运行代码
如果代码有效,请将条件检查合并到代码中。代码
function checkForNa() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 2, numRows, 1000)
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var theVal = data[i][0]; //Get first value out of this row
for (var j = 0;j<1;j++) { //Only loops once
if (theVal === "#NA!") {
Logger.log('skipped this row: ' + i);
break;
};
Logger.log('loop number: ' + i);
};
};
};
/**
* Add a menu item that calls this script
*/
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menu = [{
name: "Send Email",
functionName: "uiSendEmail"
}];
ss.addMenu("SCCCounseling", menu);
}
var EMAIL_SENT = "EMAIL_SENT";
/**
* Send the e-mail to everyone listed in the spreadsheet
*/
function uiSendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 1000;
var dataRange = sheet.getRange(startRow, 1, numRows, 1000)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
if (data[i][INDEX_OF_TIMESTAMP] != "") {
var row = data[i];
var timestamp = row[0];
var username = row[1];
var counselor = row[2];
var date = row[3];
var sName = row[4];
var wNum = row[5];
var toemail = row[6];
var sLName= row[7];
var pin = row[8];
var link = row[9];
var cMail = row[10];
var emailSent = row[11];
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + sLName + " " + wNum + " ";
var emailBody = "Online Counseling Appointment " + " - " + sName + " " + sLName + " " + wNum +
"\n\nHello " + sName +
"\n\n\nYou are scheduled for an online counseling appointment for Sacramento City College: " +
"\n\n\nDate: " + date +
"\n\nPlease follow the instructions below at least one day before your appointment to make " +
"\nsure that your computer is ready. " +
"\n\nIf your computer is not ready, you will not be able to " +
"\nparticipate in online counseling. " +
"\n\nTo cancel your appointment, please email: " +
"\n\nCounselor: " + counselor + " at " + cMail +
"\n\nYou will be required to show photo identification at the start of the appointment to verify " +
"\nyour identity. " +
"\n\n\nONE DAY BEFORE YOUR APPOINTMENT " +
"\n\nGo to the following link to test your computer readiness one day before your " +
"\nscheduled online counseling appointment: " +
"\n\nhttp://www.cccconfer.org/support/supportReadiness.aspx " +
"\n\n\nFIVE MINUTES BEFORE YOUR APPOINTMENT: " +
"\n\nGo to the following link to connect to the online counseling appointment and the " +
"\ncounselor will join you: " + link +
"\n\n\nIf you want to use the phone for audio: " +
"\n\nTelephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821 " +
"\n\nStudent PIN: " + pin +
"\n\n\nFOR ASSISTANCE CONNECTING" +
"\n\nContact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"\n\nPhone: 1-760-744-1150 ext 1537 or 1554 " +
"\n\nEmail: clientservices@cccconfer.org " +
"\n\n\nThank you " + sName;
var htmlBody = "<b>Online Counseling Appointment Confirmation" + " -</b> " + " - " + sName + " " + sLName + " " + wNum +
"<br/><br/><br/>" + "Hello " + sName + ", <br/><br/>" + "You are scheduled for an online counseling appointment for Sacramento City College: <i>" +
"<br/><br/><br/>" + "<b>Date: " + date + "<br/><br/>" + "</b><br/>" + "</i><br/>Please follow the instructions below <b>at least one day before</b> your appointment to make sure that your computer is ready." +
"<br/><br/><i>If your computer is not ready, you will not be able to participate in online counseling.</i> " + "<br/><br/> To cancel your appointment, please email: " +
"<br/><br/><font color=\"red\">Counselor:</font> " + counselor + " at " + cMail + "<br/><br/><br/>You will be required to show photo identification at the start of the appointment to verify your identity. " +
"<br/><br/><br/><b>ONE DAY BEFORE YOUR APPOINTMENT:</b> " + "<br/><br/>➢ Go to the following link to test your computer readiness one day before your scheduled online counseling appointment: " +
"<br/><br/>http://www.cccconfer.org/support/supportReadiness.aspx " +
"<br/><br/><br/><b>FIVE MINUTES BEFORE YOUR APPOINTMENT:</b>" +
"<br/><br/>➢ Go to the following link to connect to the online counseling appointment and the counselor will join you (link to counselor online room). " +
"<br/><br/> " + link +
"<br/><br/>➢ If you want to use the phone for audio: " +
"<br/><ul><li>Telephone Conference Line: 719-785-4469, Toll-free: 1-888-450-4821</li><li>Student PIN: " + pin + "</li></ul>" +
"<br/><br/><br/><b>FOR ASSISTANCE CONNECTING</b>" +
"<br/><br/>Contact CCC Confer Client Services, Monday - Friday 8am - 4pm " +
"<br/><br/>Phone: 1-760-744-1150 ext 1537 or 1554 " +
"<br/><br/>Email: clientservices@cccconfer.org " +
"<br/><br/><br/>Thank You! " + sName;
var optAdvancedArgs = {name: "SCC Counseling", htmlBody: htmlBody};
if (emailSent != EMAIL_SENT) { // Prevents sending duplicates
var subject = "Online Counseling Appointment Confirmation - " + sName + " " + wNum + " ";
MailApp.sendEmail(toemail, subject, emailBody, optAdvancedArgs);
sheet.getRange(startRow + i, 12).setValue(EMAIL_SENT);
// Make sure the cell is updated right away in case the script is interrupted
SpreadsheetApp.flush();
}
}
}