이메일을 채팅워크로 전달

12607 단어 Chatworkgooglegas

추가 2015/09/09



분명히 비슷한 일을하는 더 깨끗한 방법이 생긴 것 같습니다.

Zapier에서 할 수있는 일과 초기 설정 방법 ~ 채팅 워크와 Zapier가 제휴 그 ① | ChatWork 블로그

회사에서 커뮤니케이션 도구를 통합하고 싶다고 생각했습니다.
채팅 워크의 API 토큰을 취득 할 수 있었던 것을 계기로 해 보면 할 수 있었으므로 소개

목표



읽지 않은 메일을 채팅 작업의 특정 방으로 전달

전제


  • Gmail 사용
  • 채팅 작업에 대한 API 토큰을 얻을 수 있습니다

  • 할 일


  • 채팅 작업의 API 토큰 얻기
  • 채팅 작업에 전달할 룸을 만들고 룸 ID를 얻습니다
  • Google Apps Script에서 읽지 않은 이메일을 모니터링하고 방에 작성합니다.

    채팅 워크의 API 토큰 얻기



    2014-03-01 현재, 이용하려면 아직 신청이 필요
    신청은 여기에서
    htps //w w. 제대로 rk. 이 m/세 rゔぃせ/ぱcかげ s/ちゃとぉrk/す bぱcかげ s/아피/아 ply_베타. php

    채팅 워크에 전달할 룸을 만들고 룸 ID 얻기



    이번에는 "Mail Box"라는 방을 만들었습니다.
    룸 ID는 빨간색 테두리의 숫자 부분



    Google Apps Script에서 읽지 않은 이메일을 모니터링하고 방에 작성



    여기가 이번 키모
    먼저 GoogleDrive에서 빈 스프레드시트를 만들고 '도구' → '스크립트 편집기' → '빈 프로젝트'로 프로젝트 만들기
    다음 스크립트 저장
    function notifyMail() {
      var token = '[APIトークン]';
      var roomId = '[ルームID]';
    
      // 未読メールを取得する 検索クエリを変更すれば転送するメールを絞ることも可能
      var threads = GmailApp.search('is:unread');
      if (threads == null || threads.length === 0) return;
    
      for (var i = 0, tlen = threads.length; i < tlen; i++) {
        var msgs = threads[i].getMessages();
        for (var j = 0, mlen = msgs.length; j < mlen; j++) {
          var msg = msgs[j];
          if (!msg.isUnread()) continue;
    
          var from = msg.getFrom();
          var subject = msg.getSubject();
          // 添付ファイルがあるときに時々エラーになるため、その場合は自前でプレーンテキスト化する
          var body;
          try {
            body = msg.getPlainBody();
          }
          catch(e) {
            body = msg.getBody().replace(/<br[^>]*>/g, '\n').replace(/<[^>]+>/g, '').replace(/&(lt|gt|quot|amp|nbsp|#x?[0-9]+);/g, function(w, $1) {
              if ($1.indexOf('#x') === 0) {
                return String.fromCharCode(parseInt($1.substr(2), 16));
              }
              if ($1.indexOf('#') === 0) {
                return String.fromCharCode(parseInt($1.substr(1), 10));
              }
              return ({
                lt: '<',
                gt: '>',
                quot: '"',
                amp: '&',
                nbsp: ' '
              })[$1];
            });
          }
          var link = 'https://mail.google.com/mail/ca/u/0/#inbox/' + msg.getId(); // Gmailへのリンク
    
          // http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages
          UrlFetchApp.fetch('https://api.chatwork.com/v1/rooms/' + roomId + '/messages', {
            headers: {
              'X-ChatWorkToken': token
            },
            method: 'post',
            payload: 'body=' + encodeURIComponent(
              // メールっぽく装飾する
              // http://developer.chatwork.com/ja/messagenotation.html
              '[info][title]' + subject + '\n'
              + 'from: ' + from + '[/title]'
              + body + '\n\n' + link + '[/info]'
            )
          });
    
          msg.markRead();
        }
      }
    }
    

    사이고에 「리소스」→「현재 프로젝트의 트리거」로부터 시간 주도형의 이벤트를 추가한다

    이상
  • 좋은 웹페이지 즐겨찾기