[GAS] 정확한 시간에 트리거를 시작합니다.

개시하다


다들 쓰고 있어?GAS 릭의 규격 외에 Javascript 관련 서비스와 잘 맞아 자동송신Google이나 조작Gmail 내용 등을 활용할 수 있는 장면이 폭넓다.GoogleSpreadSheet의 기능으로는'촉발기'가 있다.
특정 조건하에서 미리 기술된 코드를 실행하는 기능이기 때문에 대량 처리 등을 제공하는 사람도 있죠?
그렇다GAS의 촉발기는 약간의 단점이 있다.
UI에서 시간을 지정하면 다음과 같은 조건만 설정할 수 있습니다.
trigger1
네, 실행 시간에 폭이 생길 수 있습니다.
지정된 시간의 트리거를 선택하더라도 실제 실행 시간은 한 시간 연장됩니다.
점심시간부터 준비했기 때문에 할 말이 없다고 생각했는데 좋은 해결책이 생겼어요.
하지만 UI가 아니라 코드 안에서 처리해야 하기 때문에 기사로 정리하고 싶어요.

코드


먼저 완성품이 되는 코드입니다.
// 現在の日付を取得
const next = new Date();

// 翌日の日付に変換
next.setDate(next.getDate() + 1);

// 09:30:00に時刻を設定
next.setHours(9);
next.setMinutes(30);
next.setSeconds(0);
  
// hogeという関数を9時に実行するトリガーを作成
ScriptApp.newTrigger('hoge').timeBased().at(next).create();
마지막 행에 익숙하지 않은 모듈이 있기 때문에 이를 중심으로 해설한다.

ScriptApp.newTrigger

GAS 표준 준비 모듈에서 트리거ScriptApp.newTrigger 유형을 생성하는 실례.
  • 참조GAS | TriggerBuilder
  • 매개 변수는 문자열에서 실행할 함수 이름입니다.
    // test()を実行するTriggerBuidlerを生成
    const testTrigger = ScriptApp.newTrigger('test');
    
    이 단계에서 트리거를 설정하지 않았습니다.
    생성된 실례GAS를 실행해야만 터치할 수 있습니다.
    // testTriggerを設定
    testTrigger.create();
    

    timebased를 사용하여 ClockTriggerBuilder 생성


    목적 트리거는 지정한 시간에 시작하는 트리거 유형입니다.
    따라서 일반TriggerBuilder이 아닌 create() 유형의 실례를 사용해야 한다.
  • 참조: GAS | ClockTriggerBuilder
  • TriggerBuilder는 집행ClockTriggerBuilder의 실례ClockTriggerBuilder를 통해 생성된 것이다.
    생성된 실례TriggerBuildertimeBased()를 사용하여 실행 시간을 지정할 수 있습니다.
    매개 변수는 ClockTriggerBuilder형이다.
    // testTriggerからClockTriggerBuilderを生成
    const testClockTrigger = testTrigger.timeBased();
    // 2020/01/01 00:00:00で時間指定し、トリガーをセット
    testClockTrigger.at(new Date(2020,11,25)).create();
    

    실행 결과


    이전 완성 코드를 실행할 때 UI에서 트리거를 확인한 후 다음과 같이 표시됩니다.
    trigger2
    트리거 유형은'날짜 트리거'에서'특정 시간'으로 바뀌었고 실행 시간도 1시간의 너비가 없어 정확한 시간을 설정한 것을 알 수 있다.

    총결산


    매일 결정되는 시간에 시작하는 처리를 만들어야 하는데, 이 방법을 이용하는 것은miso다.
    실행 과정의 마지막 설정인'자신의 시간 지정 트리거 호출'을 통해 트리거를 생성하여 매일 특정한 시간 안에 조작할 수 있다.

    좋은 웹페이지 즐겨찾기