如果拉过“错误”的单元格值

时间:2019-03-13 21:00:57

标签: if-statement google-apps-script

我的脚本的目标是通过电子邮件将单元格值发送给我,如果该单元格不包含文本“ Not Ready”。

在单元格区域I2:I8中,除I2之外的每个单元格都包含文本“未就绪”。因此,应该将I2中的信息通过电子邮件发送给我。

运行脚本时,我意外地通过电子邮件发送了范围内其他单元格的内容。此单元格与范围中的其他单元格相同。

我的直觉是该单元格区域包含一个IF公式,而不是可能是原因的文本字符串。

function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet(),
 options = [
  {name:"Scan and Email", functionName:"readSheet"},
 ];
  ss.addMenu("Email", options);

 function readSheet() {

 var ss = 
 SpreadsheetApp.openById("GOOGLE SHEET");
 var sheet = ss.getSheetByName("formResponses")
   var range = sheet.getRange("I2:I8")
 var data = range.getValue();

 if (data != "Not Ready") 

  MailApp.sendEmail("MY EMAIL ADDRESS", "Test Update", "Action:" 
+data+ ".");

 }
        }

1 个答案:

答案 0 :(得分:2)

范围包含多个单元格,因此range.getValues()。重新调谐的数据是一个数组。数组永远不会等于字符串。替换-

var data = range.getValue();
if (data != "Not Ready") 
  MailApp.sendEmail("MY EMAIL ADDRESS", "Test Update", "Action:" +data+ ".");
}

与-

var data = range.getValues();
var ready = data.filter(function(el) {
  return el[0] != 'Not Ready';
});
if (!ready.length) return;
MailApp.sendEmail('MY EMAIL ADDRESS', 'Test Update', 'Action:' + ready[0][0] + '.');