Google apps script 在“中使用脚本”设置脚本属性;如果;在谷歌

Google apps script 在“中使用脚本”设置脚本属性;如果;在谷歌,google-apps-script,Google Apps Script,我有一个脚本,当一个指标超出X范围时,并且只有当有人输入了一个新的指标时,才应该发送一个图表URL。每次我运行脚本时,它都会发送邮件,因此我知道setProperty不起作用,“if”语句不起作用,因为它只在X为TRUE时发送邮件 床单 我的代码 function myAverages() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var value = ss.getSheetByName("EmailServices").get

我有一个脚本,当一个指标超出X范围时,并且只有当有人输入了一个新的指标时,才应该发送一个图表URL。每次我运行脚本时,它都会发送邮件,因此我知道setProperty不起作用,“if”语句不起作用,因为它只在X为TRUE时发送邮件

床单

我的代码

function myAverages() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var value = ss.getSheetByName("EmailServices").getRange("P2").getValue().toString();
  var outside = ss.getSheetByName("EmailServices").getRange("S2").getValue().toString;
  var mailed = ss.getSheetByName("EmailServices").getRange("T2").getValue().toString();
  var stemiAverage = ss.getSheetByName("EmailServices").getRange("R2").getValue().toString();
  var stemiChart = ss.getSheetByName("EmailServices").getRange("U2").getValue().toString();
  var last = ScriptProperties.getProperty('last');

  //if "value" is not equal to ScriptProperty "last" AND "outside" is TRUE, then mail   
  if(value =! last, outside = "TRUE")

  {
   MailApp.sendEmail("dave@mydomain.com", "Metric Warning",
    "Yearly STEMI Average has fallen below 65%, it is now: " + stemiAverage + "%" +
    "\n\nTo see the current trending chart " + stemiChart + "\n\n The sheet that    calculated this is here " + ss.getUrl());
   ScriptProperties.setProperty('last','value');
  }
}

谢谢你能借给我的帮助。我在自学这些东西,感觉自己像个新手。在这里发布之前,我已经尝试了100个或更多的脚本组合。

您需要使用AND运算符:
&&

此外,检查相等性需要两个等号:
=

因此,请务必尝试以下方法:

if (value!=last && outside=="TRUE") {

您需要使用AND运算符:
&&

此外,检查相等性需要两个等号:
=

因此,请务必尝试以下方法:

if (value!=last && outside=="TRUE") {

作为Phil回答的补充,在您的评论之后,您的脚本中还有另一个错误:

   ScriptProperties.setProperty("last","value");
应该是

   ScriptProperties.setProperty({'last':value},true);
true
参数是可选的,请参见关于ScriptProperties的,它允许您删除所有其他键

因此,您的完整功能和更正将是:

function myAverages(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var value = ss.getSheetByName("EmailServices").getRange("P2").getValue().toString();
  Logger.log('value = '+value)    
      var outside = ss.getSheetByName("EmailServices").getRange("S2").getValue().toString();
  Logger.log('outside='+outside)
      var mailed = ss.getSheetByName("EmailServices").getRange("T2").getValue().toString();
  Logger.log('mailed = '+mailed)    
      var stemiAverage = ss.getSheetByName("EmailServices").getRange("R2").getValue().toString();
      var stemiChart = ss.getSheetByName("EmailServices").getRange("U2").getValue().toString();
      var last = ScriptProperties.getProperty('last');
  Logger.log('last='+last)    
       if(value != last && outside == "true"){
          MailApp.sendEmail("me@mydomain.com", "Metric Warning",
          "Yearly STEMI Average has fallen below 65%, it is now: " + stemiAverage + "%" +
          "\n\nTo see the current trending chart " + stemiChart + "\n\n The sheet that    calculated this is here " + ss.getUrl());
          ScriptProperties.setProperty({'last':value});
  Logger.log('mail sent')
         }
    }

作为Phil回答的补充,在您的评论之后,您的脚本中还有另一个错误:

   ScriptProperties.setProperty("last","value");
应该是

   ScriptProperties.setProperty({'last':value},true);
true
参数是可选的,请参见关于ScriptProperties的,它允许您删除所有其他键

因此,您的完整功能和更正将是:

function myAverages(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var value = ss.getSheetByName("EmailServices").getRange("P2").getValue().toString();
  Logger.log('value = '+value)    
      var outside = ss.getSheetByName("EmailServices").getRange("S2").getValue().toString();
  Logger.log('outside='+outside)
      var mailed = ss.getSheetByName("EmailServices").getRange("T2").getValue().toString();
  Logger.log('mailed = '+mailed)    
      var stemiAverage = ss.getSheetByName("EmailServices").getRange("R2").getValue().toString();
      var stemiChart = ss.getSheetByName("EmailServices").getRange("U2").getValue().toString();
      var last = ScriptProperties.getProperty('last');
  Logger.log('last='+last)    
       if(value != last && outside == "true"){
          MailApp.sendEmail("me@mydomain.com", "Metric Warning",
          "Yearly STEMI Average has fallen below 65%, it is now: " + stemiAverage + "%" +
          "\n\nTo see the current trending chart " + stemiChart + "\n\n The sheet that    calculated this is here " + ss.getUrl());
          ScriptProperties.setProperty({'last':value});
  Logger.log('mail sent')
         }
    }

我似乎可以通过使用“last”而不是“last”使ScriptProperties正常工作。但是,如果我在if语句中添加&或&&符号,我会在左侧得到一个无效赋值错误。(第1行)。我将在上面的代码中更正ScriptProperties,但我仍然必须计算出和的外部=“TRUE”。不,ScriptProperties本身也不起作用:(我似乎可以通过使用“last”而不是“last”来让ScriptProperties正常工作。但是如果我在if语句中使用&或&&符号,则左侧会出现一个无效赋值错误。(第1行)。我将在上面的代码中更正ScriptProperties,但我仍然必须计算出AND EXTER=“TRUE”。否,ScriptProperties本身也不起作用。:(Serge最终帮助我修复了代码。我感谢所有的帮助和评论。我刚刚学习了这些东西,Serge还向我展示了如何使用我们在上面的解决方案中留下的记录器。非常酷的东西。再次感谢Serge不客气,很高兴它对您有所帮助,祝您加油旅途好运;-)Serge最终帮助我修复了代码。我感谢所有的帮助和评论。我正在学习这些东西,Serge还向我展示了如何使用我们在上面的解决方案中留下的记录器。非常酷的东西。再次感谢Serge不客气,很高兴它对你有所帮助,祝你加油旅途好运;-)