Google Apps Script를 사용하여 Google Drive의 변경 통지 받기

Google Apps Script에서 나는 Google Drive의 파일 변경을 검측하고 싶어서 Google Apps Script에서 변경 통지를 받는 방법[1]을 시도했다.
!
다음은 claspTypeScript를 사용합니다.

구글 드라이브의 변경 통지는


대충 쓰면'Google Drive의 드라이브와 파일이 변경되었을 때 웹훅을 통해 알림을 받는다'는 기능이다.
자세한 내용은 모두 던지고 다음 글은 참고할 수 있다.

Google Apps Script 항목 설정


변경 통지Google Drive API를 받기 위해서는 다음과 같은 설정이 필요합니다.
  • 드라이브 서비스 증가
  • 액세스 가능한 모든 웹 애플리케이션으로 디버깅
  • 이것들은 편집할 수 있다appsscript.json.
    appsscript.json
    {
      "timezone": "america/new_york",
      "dependencies": {
        "enabledadvancedservices": [
          {
            "usersymbol": "drive",
            "version": "v2",
            "serviceid": "drive"
          }
        ]
      },
      "exceptionlogging": "stackdriver",
      "runtimeversion": "v8",
      "webapp": {
        "executeas": "user_deploying",
        "access": "anyone_anonymous"
      }
    }
    

    Google Drive에서 변경 공지를 받는 코드


    기본적으로 상술한 글에서 Go의 코드는 Google Apps Script에 기술되지만 특정한 대응(처리 요청 페이지 눈썹 등)이 필요하다.
    이번에도 드라이브 전체를 처리하고 싶은 게 있어서 다음과 같은 일을 했습니다.
  • startPageToken 등 스크립트 속성에 저장

  • 진행하지 않음X-Goog-Resource-State에서의 통지의 종류 판정
    대체
  • , 유무doPoste.postData.contents에 따라 판정

  • 채널의 유효기간 대책으로 지정된 시간의 촉발을 통해 채널을 재제작하다

  • 파일 이름과 id를 수정 기록으로 전자 표에 쓰기
  • startPageToken 장애를 방지하기 위해 스크립트를 통해 제어 순서 잠금
  • 코드는 아래 창고에 기재되어 있습니다.

    실제로 받아볼게요.


    프로젝트와 코드가 준비되어 있으니 변경 통지를 받아 보세요.

    스프레드시트


    알림 파일 이름을 포함하는 전자 표를 만들고 id와 작업표 이름을 기록합니다.

    프로그램 및 설정

  • git clone https://github.com/hankei6km/test-drive-chages.git . && npm install 클론 웨어하우스
  • 복제된 창고 실행clasp create으로 웹pp 스크립트 만들기
  • clasp pushclasp deploy로 디버깅 만들기
  • depuro의 URL이 필요합니다.이것은 clasp 에서 확인할 수 없기 때문에 스크립트로 편집한 'deproy' 와 'deproy 관리' 를 사용합니다.
    ▶ 그림 복사 4-1 URL
    スクリプトエディターでデプロイの URL をコピーできる画面を表示しているスクリーンショット
    그런 다음 스크립트 속성에 다음 내용을 설정합니다.
  • address - 프로그램을 풀 URL
  • sheet_id - 스프레드시트의 id
  • sheet_name - 워크시트 이름
  • 수신 시작


    스크립트 편집기에서 함수 reset() 를 실행할 때 Google Drive 에서 알림을 보냅니다.드라이브의 파일을 변경하면 파일 이름 및 id가 스프레드시트에 기록됩니다.
    ▶ 그림4-2 업데이트된 상황을 스프레드시트에 쓰기
    Google Drive に複数ファイルをコピーし、その後ファイルを 1 つ削除している動画

    영구화


    채널보다 유효기간이 짧은 간격(이번 코드는 31분)으로 실행reset() 함수를 실행하면 영구적으로 수신할 수 있다.

    접수 종료


    확인이 끝난 후 stop() 함수를 실행하고 채널을 버립니다.

    로그 표시


    이번에는 스프레드시트를 작성했지만 통상console.log 등을 쓴다.그러나 자신 이외의 사람이 요청한 POST 실행 함수는 로그 내용을 확인할 수 없습니다.
    GCP 프로젝트로 변경할 수 있지만 이번에는 생략합니다. (검색하면 바로 방법을 찾을 수 있습니다.)

    끝말


    Google Drive의 변경 통지는 Google Apps Script에서 접수되었다.
    1일 정도 코드를 이동해보니 자신의 사용법은 펑크 없이 대체로 변경[2]이 감지됐다.
    이렇게 해서Google Apps Script 파일의 변경도 쉽게 처리되고 제작 중인 도구도 변경된 파일을 거의 실시간으로 조작할 수 있다.
    각주
    처음에는 시간 지정을 사용했지만 편집 후 한동안 업데이트가 되지 않아 역시나 위화감이 컸다.↩︎
    알림에throttle 처리가 들어간 것 같아서 빠질 거예요.↩︎

    좋은 웹페이지 즐겨찾기