Google 데이터 스튜디오 그래프를 GAS로 Slack 전달

3111 단어 슬랙DataStudiogas

개요



Google Data Studio에서 Slack 게재해야 하는 작업이 발생했기 때문에 대응 방법을 설명합니다.

파이프라인


  • 데이터 스튜디오에서 자신에게 메일을 일일로 예약 배달
  • GAS에서 Data Studio에서 보낸 최근 이메일에서 첨부 파일 가져 오기
  • 얻은 첨부 파일을 Slack 배달

  • ※어딘가의 처리로 실패하면 수동으로 투하하는 운용을 상정

    고려한 다른 수단



    DataStudio의 링크를 투하하여 썸네이션을 표시합니다.



    ↓이런 느낌의 링크
    https://datastudio.google.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/thumbnail?sz=full
    
  • 공개 범위를 좁히기 때문에 Slack이 축소판을 확장하지 않습니다 (기본 축소판 표시).
  • 그러나 리디렉션하면 Google 포토로 건너 뛰고 정적 이미지 데이터가 생성됩니다
  • https://lh3.googleusercontent.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  • 이 URL이라면 Slack이 썸네를 전개해 준다
  • 리디렉션 후 URL은 정적 이미지로 인해 데이터 업데이트에 반영되지 않으므로 매번 리디렉션하여 리디렉션 후 URL을 얻어야합니다.
  • 프로그램에서 시도했는데 인증 문제도 있습니다 포기 (Google 계정 관리에 IDaaS를 사용하고 있기 때문에 장애물이 높았다).

    메일 배달 대상을 Slack으로 설정


  • 접힌 상태로 배달되므로 매번 클릭해야합니다
  • 확대할 수 없다
  • DataStudio의 링크로 날아가는 것과 크게 다르지 않기 때문에 포기

  • Google Data Studio API


  • 사용할 수있는 API를 찾을 수 없습니다

  • 파이프라인 구현



    일정 배달 설정



    공유에서 설정합니다.



    GAS에서 검색할 때 제목을 사용하므로 반드시 다른 사람과 구별하는 제목을 넣어야 합니다.



    GAS 구현



    데이터 스튜디오에서 게재되는 메일 첨부 파일을 확인하면 PDF 만 있지만,
    스크립트를 돌려 첨부 파일을 확인했는데, 분명히 PDF와 jpg가 존재하는 것 같습니다.
    GAS에서는 첨부파일의 jpg를 가져와서 이 jpg를 Slack에 투하합니다.

    ※Slack token의 취득에 대해서는 할애합니다
    function search_from_email_attachments() {
      // Datastudioからスケジュール配信されたメールを取得(条件に一致する最新のメールを一件取得)
      var Threads = GmailApp.search('from:"[email protected]" subject:XXXXXXXXXX', 0, 1);
      var messages = Threads[0].getMessages();
      var message = messages[messages.length-1];
    
      // メールから画像を取得
      var attachments = message.getAttachments();
      for(attachment of attachments){
        if (attachment.getName().indexOf('.jpg') > 0) {
          return attachment;
        }
      }
    }
    
    function file_upload_to_slack(attachment) {
      var SLACK_TOKEN='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
    
      var data={
        token:SLACK_TOKEN,
        file:attachment,
        file_type: 'jpg',
        channels: 'XXXXXXXXXX',
        title: 'XXXXXXXXXX',
        initial_comment: 'XXXXXXXXXXXXXXXXXXXX'
      };
    
      var option={
        'method':'POST',
        'payload':data
      };
    
      res = UrlFetchApp.fetch('https://slack.com/api/files.upload',option);
      return res;
    }
    
    function main(){
      attachment = search_from_email_attachments()
      res = file_upload_to_slack(attachment)
      Logger.log(res);
    }
    

    그리고는 이 스크립트를 트리거로 설정하면 완료입니다.
    ※트리거는 편집 > 현재의 프로젝트의 트리거로부터 설정할 수 있습니다.

    좋은 웹페이지 즐겨찾기