Как запланировать ежечасную проверку списка 404 проверки URL? - PullRequest
1 голос
/ 01 июня 2019

Я пытаюсь настроить лист Google, который проверяет ответ списка URL-адресов (около 30) из них.Я хотел бы, чтобы это было запланировано каждый час.Неважно, когда в час проверяются ответы URL, но было бы желательно, чтобы это делалось каждые 60 минут, а также работает, когда я не обращаюсь к электронной таблице (т.е. в автономном режиме)

Я очень новичокс помощью редактора сценариев листов Google, так что все еще пытаюсь справиться с ним.Я использовал скрипт ниже.В редакторе сценариев я сделал следующее:

  • Редактировать> Триггеры проекта> Добавить триггер.
  • Выберите «Функция»> «HTTP-ответ»
  • Четный источник> Время зависит
  • Выберите тип основанного на времени триггера> часовой таймер.

function HTTPResponse( uri )
{
 var response_code ;
try {
 response_code = UrlFetchApp .fetch( uri ) .getResponseCode() .toString() ;
 }
catch( error ) {
 response_code = error .toString() .match( / returned code (\d\d\d)\./ )[1] 
;
 }
finally {
 return response_code ;
 }
}

Я ожидал, что вышеуказанные настройки будут обновлять проверки URL каждый час ... но они, похоже, обновляются толькокогда я вручную обновляю ячейку.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 01 июня 2019

Попробуйте это:

function checkUrls( ) {
  var ss=SpreadsheetApp.openById('id');//set ss id
  var sh=ss.getSheetByName('Sheet1');//set sheet name
  var urlA=['https:example.com','http://example.com'];//u pick em
  for(var i=0;i<urlA.length;i++) {
    var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "'yyyy/mm/dd HH:mm:ss");//change format if you wish
    var response=UrlFetchApp.fetch(urlA[i]);
    sh.appendRow(ts,urlA[i],response.getResponseCode());
  }
}

Настройка таймера:

function setupHourlyTimer() {
  if(!isTrigger('checkUrls')) {
    ScriptApp.newTrigger('checkUrls').timeBased().everyHours(1).create();
  }
}

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...