Google 프레젠테이션을 GAS로 매월 자동 업데이트

소개



안녕하세요. 모모쿠로의 달리기를 오랜만에 듣고, 아 좋아해. 라고 생각했습니다, 필자입니다

그런데, 이번은, 자사의 매체 자료를 매월 수동으로 값 갱신하고 있었으므로, 자동화했기 때문에 기사로 했습니다.
도움이되면 다행입니다.

전제



매체 자료의 제약이라고 할까 사양 같은 것이 있습니다.

  • Google 프레젠테이션에서 관리 중입니다.
  • 문서의 값에 GoogleAlytics 값이 포함되어 있습니다.
  • 문서의 값에 GoogleSearchConsole의 값이 포함되어 있습니다.
  • 문서를 매월 업데이트하고 싶습니다.
  • 이전 자료를 아카이브 폴더로 이동하고 싶습니다.

  • 정책


  • Google 스프레드 시트에서 업데이트 할 값을 관리합니다.
  • 1의 값은 자동으로 업데이트됩니다.
  • 아카이브 폴더를 만듭니다.
  • 매월 3 일에 작성 프로세스를 수행합니다.
  • GoogleAlytics, GoogleSearchConsole 데이터가 쌓일 때까지 기다리기.


  • 구현



    1. 업데이트 값 관리 스프레드 시트 만들기.



    필요한 값은 다음 세 가지입니다.
  • slide_object_id: 슬라이드 식별할 고유 ID
  • element_object_id : 슬라이드의 요소를 식별하는 고유 ID
  • value: 업데이트된 값



  • No.
    slide_object_id
    element_object_id
    value


    1
    gdf91911947_0_0
    gdf91911947_0_1
    제목 (업데이트 됨)

    2
    gdf91911947_0_0
    gdf91911947_0_2
    설명문(업데이트됨)


    스프레드 시트의 스쿠쇼라면 이런 느낌입니다 ↓


    표시된 슬라이드의 slide_object_id는 URL에서 가져올 수 있습니다.





    element_object_id는 DevTools에서 얻을 수 있습니다.





    value는 별도의 시트에서 플러그인 등으로 월별로 집계 된 Google Alytics 값을 사용합니다.



    ※Qiita의 이 기사상에서는 끈을 씁니다

    2. 아카이브용 폴더 작성



    작성 후의 드라이브는 이런 느낌입니다 ↓


    이때 폴더 ID를 삼가해 주십시오.

    3. 스크립트 편집기 시작



    이번에는 다음과 같이 스프레드 시트에 묶는 스크립트로 GAS를 쓰려고합니다.



    4. GAS 쓰기



    치마치마 써도 있어, 단번에 씁니다
    const main = () => {
      const google_drive_folder_id = 'xxxx';
      const google_drive_folder_id_archive = 'yyyy'
      const base_file_name = '媒体資料_'
      const date = new Date()
    
      // yyyymm
      const date_last_month_yyyymm = Utilities.formatDate(new Date(date.getFullYear(), date.getMonth() - 1, 1), 'JST', 'yyyyMM')
      const date_this_month_yyyymm = Utilities.formatDate(date, 'JST', 'yyyyMM')
    
      // file name
      const file_name_old = base_file_name + date_last_month_yyyymm
      const file_name_new = base_file_name + date_this_month_yyyymm
      const slide_new = DriveApp.getFolderById(google_drive_folder_id).getFilesByName(file_name_new);
    
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
      const data = sheet.getRange('A2:D' + sheet.getLastRow()).getValues();
    
      if (! slide_new.hasNext()) {
        // 生成対象月のスライドが無ければ前月スライドをコピーして作成.
        const slides_original = DriveApp.getFolderById(google_drive_folder_id).getFilesByName(file_name_old);
        if (! slides_original.hasNext()) {
          return false;
        }
    
        const slide_original = slides_original.next()
        var new_presentation_id = slide_original.makeCopy(file_name_new).getId()
    
        // 古いslideをアーカイブフォルダに移動.
        slide_original.moveTo(DriveApp.getFolderById(google_drive_folder_id_archive))
      } else {
        var new_presentation_id = slide_new.next().getId();
      }
    
      // 値更新
      let slide, element;
      for (var i in data) {
        slide = SlidesApp.openById(new_presentation_id).getSlideById(data[i][1]);
        element = slide.getPageElementById(data[i][2]);
        element.asShape().getText().setText(data[i][3]);
      }
    }
    

    5. 스크립트 실행



    스크립트 실행에는 다음 권한이 필요하므로 처음 시작할 때 대화 상자에 따라 허용하십시오



    6. 동작 확인



    슬라이드가 업데이트되었습니다!


    또한 자료는 아카이브 폴더로 이동했습니다!


    7. 트리거 세트



    매월 자동으로 업데이트하고 싶으므로 다음과 같이 트리거 세트합니다.


    이것으로 완료!

    결론



    달리기 시작했지만 Google 슬라이드를 GAS로 업데이트하는 흐름이었습니다!
    이번에는 문자 만 업데이트하고 있지만 이미지 등을 업데이트 할 수 있습니다

    그럼!

    좋은 웹페이지 즐겨찾기