1

作成しようとしているクロックベースのトリガーに問題があります。これは、GoogleAppsScript用です。このスクリプトは、スプレッドシートから午前5時に情報を電子メールで送信する関数を呼び出すことになっています。午前5時から午前6時までの組み込みトリガーで使用したため、この関数が機能することはわかっていますが、午前5時に必要であり、その時間範囲ではいつでも使用できません。これが私のコードです:

var SOD_Briefing_Trigger = ScriptApp.newTrigger("sendBriefingByEmail")
.timeBased().
atHour(5)
.create();

実行またはデバッグしようとするたびに、次のエラーメッセージが表示されます。

Needs a positive frequency of recurrence

これが初心者の質問のように思われる場合は申し訳ありません。私はここで数日を過ごし、一般的に同様の問題をグーグルで検索しました。何も見つかりませんでした。

4

2 に答える 2

1

そのエラーメッセージ少しわかりにくいです。「atHour」とだけ言うと、システムは「時間」を認識しますが、「頻度」は認識しません。

これはうまくいくはずです。

var SOD_Briefing_Trigger = ScriptApp.newTrigger("sendBriefingByEmail")
.timeBased()
.atHour(5)
.everyDays(1)
.create();

「everyDays」呼び出しに注意してください。つまり、X日ごとに実行します-この呼び出しでは毎日実行します。ここに記載されている呼び出しに基づいて、他の周波数に変更できます。他のいくつかの例-「atDate」(今日または明日だけ実行したい場合)および「onWeekDay」(たとえば毎週月曜日に実行したい場合)。

于 2012-11-01T14:35:29.363 に答える
0

I was able to get it to work once by using a simple function that just sent me an email with a short message. I have since not been able to get it to work to send me the longer email based off the spreadsheet.

Here is the entire code I was trying to run, that did not send me anything at 0500 today.

function createTimeTrigger3() {

  try{



  var SOD_Briefing_TriggerMonday = ScriptApp.newTrigger("sendBriefingByEmail2")
      .timeBased()
      .atHour(5)
      .nearMinute(15)
      .onWeekDay(ScriptApp.WeekDay.MONDAY)
      .create();

    var SOD_Briefing_TriggerTuesday = ScriptApp.newTrigger("sendBriefingByEmail2")
      .timeBased()
      .atHour(5)
        .nearMinute(15)
      .onWeekDay(ScriptApp.WeekDay.TUESDAY)
        .create();

    var SOD_Briefing_TriggerWednesday = ScriptApp.newTrigger("sendBriefingByEmail2")
      .timeBased()
      .atHour(5)
        .nearMinute(15)
      .onWeekDay(ScriptApp.WeekDay.WEDNESDAY)
        .create();

    var SOD_Briefing_TriggerThursday = ScriptApp.newTrigger("sendBriefingByEmail2")
      .timeBased()
      .atHour(5)
        .nearMinute(15)
      .onWeekDay(ScriptApp.WeekDay.THURSDAY)
        .create();

    var SOD_Briefing_TriggerFriday = ScriptApp.newTrigger("sendBriefingByEmail2")
      .timeBased()
      .atHour(5)
        .nearMinute(15)
      .onWeekDay(ScriptApp.WeekDay.FRIDAY)
        .create();


  }
  catch(err)
  {
     MailApp.sendEmail("************.gov", "there was a problem with the SOD trigger", err.message);

}

   Logger.log("Unique ID of SOD_Briefing_TriggerMonday: " + SOD_Briefing_TriggerMonday.getUniqueId());
    Logger.log("Unique ID of SOD_Briefing_TriggerTuesday: " + SOD_Briefing_TriggerTuesday.getUniqueId());
    Logger.log("Unique ID of SOD_Briefing_TriggerWednesday: " + SOD_Briefing_TriggerWednesday.getUniqueId());
    Logger.log("Unique ID of SOD_Briefing_TriggerThursday: " + SOD_Briefing_TriggerThursday.getUniqueId());
    Logger.log("Unique ID of SOD_Briefing_TriggerFriday: " + SOD_Briefing_TriggerFriday.getUniqueId());
      Logger.log("Unique ID of SOD_Briefing_TriggerToday: " + SOD_Briefing_TriggerToday.getUniqueId());


}

function sendBriefingByEmail2() {


  var email = SpreadsheetApp.openById("***********").getSheetByName("Email Roster").getRange(4, 3).getValue()
      +SpreadsheetApp.openById("***************").getSheetByName("Email Roster").getRange(5, 3).getValue()
      +SpreadsheetApp.openById("***************").getSheetByName("Email Roster").getRange(6, 3).getValue()
      +SpreadsheetApp.openById("***************").getSheetByName("Email Roster").getRange(7, 3).getValue()
      +SpreadsheetApp.openById("*************").getSheetByName("Email Roster").getRange(8, 3).getValue()
      +SpreadsheetApp.openById("*********************").getSheetByName("Email Roster").getRange(9, 3).getValue()
      +SpreadsheetApp.openById("**********************").getSheetByName("Email Roster").getRange(10, 3).getValue()
      +SpreadsheetApp.openById("**************").getSheetByName("Email Roster").getRange(11, 3).getValue()
      +SpreadsheetApp.openById("**********************").getSheetByName("Email Roster").getRange(12, 3).getValue();

      if (SpreadsheetApp.openById("**********************").getSheetByName("Previous_24_Hours").getRange(2, 1).isBlank()){

        try {

      MailApp.sendEmail(email, "No SOD Daily Briefing to Report Today", "There were no daily briefing entries submitted for SOD in the previous 24 hours.");

        }

        catch(err){ 
  MailApp.sendEmail("*************.gov", "there was a problem sending the SOD BLANK briefing in the AM", err.message);
}


        }




    else {

      try {

  var subject = "Special Operations Bureau Daily Briefing";

  var row = 2;

      var email24sheet = SpreadsheetApp.openById("*********************").getSheetByName("Previous_24_Hours");


  var LastRow = SpreadsheetApp.openById("******************").getSheetByName("Previous_24_Hours").getLastRow();




  var msgHtml = ""

      do {
      msgHtml = msgHtml + "<br><hr><br>"

      +"<p>"+"<b>"+"Unit: "+"</b>"+email24sheet.getRange(row, 11).getValue()+"</p>"
      +"<p>"+"<b>"+"Incident: "+"</b>"+email24sheet.getRange(row, 1).getValue()+"</p>"
      +"<p>"+"<b>"+"Date / Time: "+"</b>"+email24sheet.getRange(row, 2).getValue()+ " @ " + email24sheet.getRange(row, 3).getValue()+ " hours"+"</p>"
      +"<p>"+"<b>"+"Location: " + "</b>" +email24sheet.getRange(row, 4).getValue()+"</p>"      
        +"<p>"+"<b>"+"Trooper: "+"</b>"+email24sheet.getRange(row, 5).getValue()+"</p>"
        +"<p>"+"<b>"+"Assisting Trooper(s): "+"</b>"+email24sheet.getRange(row, 6).getValue()+"</p>"
     +"<p>"+"<b>"+"Suspect: "+"</b>"+email24sheet.getRange(row, 7).getValue()+"</p>"
       +"<p>"+"<b>"+"Charges: "+"</b>"+email24sheet.getRange(row, 8).getValue()+"</p>"
      +"<p>"+"<b>"+"Yield: "+"</b>"+email24sheet.getRange(row, 9).getValue()+"</p>"
          +"<p>"+"<b>"+"Synopsis: "+"</b>"+email24sheet.getRange(row, 10).getValue()+"</p>";
row = row + 1;

} while(row < LastRow+1);


  var msgHeader = "<p>"+"<H1>"+"<P ALIGN=Center>"+"Special Operations Bureau Daily Briefing"+"</H1>"+"</p>"
        +"<p>"+"<H2>"+"<P ALIGN=Center>"+"Created: " + new Date().toLocaleDateString()+"</H2>"+"</p>";

  var msgFooter = "<p>"+"<i>"+"<P ALIGN=Center>"+"This message was automatically generated using data submitted electronically from the Spec Ops Bureau website and / or form.  For errors or suggestions for improvements, email **************.gov "+"</i>"+"</p>";

    var msgPlain = msgHtml.replace(/(<([^>]+)>)/ig, ""); // clear html tags for plain mail


  MailApp.sendEmail(email, subject, msgPlain, { htmlBody: msgHeader + msgHtml + msgFooter });

    SpreadsheetApp.openById("*************").getSheetByName("Previous_24_Hours").getRange("Previous_24_Data").clearContent(); //clears the incidents that were just sent

  }

catch(err){ 
  MailApp.sendEmail("**************.gov", "there was a problem sending the SOD briefing in the AM", err.message);
}

}

  }

I was getting nothing at 0500. I then tried to make more triggers just to test the trigger builder and try different things to see what I could make work.

I used the command I found from the google script site (https://developers.google.com/apps-script/managing_triggers_programmatically) to delete the triggers:

// Delete a trigger with the given unique ID
function deleteTrigger(triggerId) {
  // Locate a trigger by unique ID
  var allTriggers = ScriptApp.getScriptTriggers();
  // Loop over all triggers
  for(var i=0; i < allTriggers.length; i++) {
    if (allTriggers[i].getUniqueId() == triggerId) {
      // Found the trigger and now delete it
      ScriptApp.deleteTrigger(allTriggers[i]);
      break;
    }
  }
}

But now I am getting:

This script has too many triggers. Triggers must be deleted from the script before more can be added.

and

Already setting up a recurring clock trigger.

as error messages emailed to me when I try to run anything.

Should I instead do a different function for each day of the week's trigger?

于 2012-11-02T13:53:21.343 に答える