Установить свойства скрипта мгновенно или после выполнения? - PullRequest
1 голос
/ 11 ноября 2019

У меня есть сценарий, который должен выполняться каждый день в начале часа.

Я установил автоматические триггеры времени, которые запускают сценарий проверки каждые 10 минут, чтобы увидеть, будет ли 10 минут до следующего часа,Сценарий отправляет текст и электронное письмо в наш список, и это работает (хотя выполнение занимает 5-20 минут).

Проблема заключается в том, что люди получают двойной текст и электронные письма.

Я подозреваю, что причина в том, что скрипт проверки устанавливает свойство скрипта, но на самом деле это не так. получить набор до завершения сценария (аналогично написанию ячеек). Если выполнение сценария занимает более 10 минут, сценарий снова запустится без нового свойства и приведет к его двойному запуску. Мой вопрос: «происходит ли setProperty () мгновенно или происходит в конце сценария»?

Если это происходит мгновенно, то мне нужно найти другую причину сценарияКажется, выговаривать каждого дважды. Вот мой скрипт проверки для справки. Обратите внимание, что когда я выполняю функцию sendComs (time) вручную, без триггеров времени, она выполняется только один раз. Таким образом, кажется, что проблема ниже чего-то.

    function sendDaily () {
  var today = new Date();
  var hours = today.getHours();
  var mins = today.getMinutes();
  var scriptProperties =  PropertiesService.getScriptProperties();
  var timeLastTriggered = scriptProperties.getProperty('LastTime');
  switch (timeLastTriggered) {
    case '0':
      if (hours >= 4 && mins >= 50 || hours >= 5) {
        scriptProperties.setProperties({'LastTime':'5'})
        sendComs('5:00 AM');
      }
    break;
    case '5':
      if (hours >= 5 && mins >= 50 || hours >= 6) {
        scriptProperties.setProperties({'LastTime':'6'});
        sendComs('6:00 AM');
      }      
    break;
          case '6':
      if (hours >= 6 && mins >= 50 || hours >= 7) {
        scriptProperties.setProperties({'LastTime':'7'});
        sendComs('7:00 AM');
      }      
    break;
          case '7':
      if (hours >= 7 && mins >= 30 || hours >= 8) {
        scriptProperties.setProperties({'LastTime':'7.5'});
       sendComs('7:30 AM');
      }      
    break;
                case '7.5':
      if (hours >= 7 && mins >= 30 || hours >= 8) {
        scriptProperties.setProperties({'LastTime':'7.6'});
       sendComs('7:40 AM');
      }      
    break;
                      case '7.6':
      if (hours >= 7 && mins >= 30 || hours >= 8) {
        scriptProperties.setProperties({'LastTime':'7.7'});
       sendComs('7:50 AM');
      }      
    break;
                            case '7.7':
      if (hours >= 7 && mins >= 30 || hours >= 8) {
        scriptProperties.setProperties({'LastTime':'7.8'});
       sendComs('7:55 AM');
      }      
    break;
                      case '7.8':
      if (hours >= 7 && mins >= 30 || hours >= 8) {
        scriptProperties.setProperties({'LastTime':'8'});
       sendComs('8:00 AM');
      }      
    break;
          case '8':
      if (hours >= 8 && mins >= 50 || hours >= 9) {
        scriptProperties.setProperties({'LastTime':'9'});
        sendComs('9:00 AM');
      }      
    break;
          case '9':
      if (hours >= 11 && mins >= 50 || hours >= 12) {
        scriptProperties.setProperties({'LastTime':'12'});
        sendComs('12:00 PM');
      }      
    break;
          case '12':
      if (hours >= 14 && mins >= 50 || hours >= 15) {
        scriptProperties.setProperties({'LastTime':'15'});
        sendComs('3:00 PM');
      }      
    break;
          case '15':
      if (hours >= 17 && mins >= 50 || hours >= 18) {
        scriptProperties.setProperties({'LastTime':'18'});
        sendComs('6:00 PM');
      }      
    break;
          case '18':
      if (hours >= 20 && mins >= 50 || hours >= 21) {
        scriptProperties.setProperties({'LastTime':'21'});
       sendComs('9:00 PM');
      }      
    break;
          case '21':
      if (hours >= 23 && mins >= 50 || hours < 5) {
        scriptProperties.setProperties({'LastTime':'0'});
        sendComs('12:00 AM');
      }      
    break;
  }
}

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Я думаю, что это ответит на вопрос для вас. Вставьте его и запустите.

function doesItHappenInstantly() {
  var ps=PropertiesService.getScriptProperties();
  ps.setProperty("testvalue",0);
  for(var i=0;i<5;i++) {
    var tv=ps.getProperty("testvalue");
    if(tv!=i) {
      SpreadsheetApp.getUi().alert("It does not happen instantly");
      return;
    }
    ps.setProperty("testvalue",i+1);
  }
  SpreadsheetApp.getUi().alert("It happens instantly");
}

Предупреждение: не запускайте его с большим количеством итераций, иначе вы получите сообщение об ошибке , которое вызывается слишком много раз за один день .

0 голосов
/ 11 ноября 2019

Свойства сохраняются мгновенно.

В вашем скрипте должны быть другие проблемы, которые вызывают двойные сообщения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...