0

メトリックがXの範囲外になり、誰かが新しいメトリックを入力した場合にのみ、グラフのURLをメールで送信することになっているスクリプトがあります。スクリプトを実行するたびにメールが送信されるため、setPropertyが機能しておらず、「if」ステートメントが機能していないことがわかります。これは、XがTRUEの場合にのみメールを送信することになっているためです。

シート... https://docs.google.com/spreadsheet/ccc?key = 0Ai_2YLvaQba0dHN1dWFpY0ZSbGpudWF4cTJYNlFwNHc&usp = shareing

私のコード...

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以上の組み合わせを試しました。

4

2 に答える 2

3

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')
         }
    }
于 2013-02-10T22:26:01.737 に答える
0

AND演算子を使用する必要があります:&&

また、等号をチェックするには、2つの等号が必要です==

したがって、必ずこれを試してください。

if (value!=last && outside=="TRUE") {
于 2013-02-10T21:29:36.340 に答える