LoginSignup
0
1

More than 5 years have passed since last update.

メールの添付ファイルをGoogleドライブにアップして、件名と本文に加えてファイルのリンクをChatworkに投稿するGoogleAppsScript

Last updated at Posted at 2018-09-25

使用用途

WEBの問い合わせフォームなどに設定しているメールを、Chatworkで複数人対応したいときに使用したりすると良いでしょう。※Gmail使っていない場合は、Gmail上で他のアカウントを受信できるようにすれば良い。

プログラム概要

Gmailから未読+条件で検索
未読のメールを既読すると同時に
添付ファイルをGoogleドライブの特定のフォルダにセット
セットしたファイルのファイル名&URLリンクを取得する
メールの件名、本文の後にファイル名&URLリンクをメッセージとして特定のルームに投稿する。

設定箇所

コードに変数記入4か所

  • ChatworkAPIトークン(BOTアカウントのAPIトークン)
  • ChatworkのROOMID(BOTアカウントは事前にルームに加入させておく)
  • Chatwork宛先ID(TOを入れる人数を増やすときはコード変更)
  • Gmail検索条件(is:unread に続く条件) #### その他設定
  • GoogleドライブフォルダID(フォルダの権限を閲覧可にしておく)


コード.js
function main() {
  //チャットワークトークン・ID
  const CW_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                    
  const CW_ROOM = "99999999";
  const CW_TO = "9999999";

  //Gmailから特定条件のスレッドを検索しメールを取り出す
  var strTerms = 'is:unread label:hogehoge@hoge.co.jp';
  var myThreads = GmailApp.search(strTerms, 0, 50); //条件にマッチしたスレッドを取得
  var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する→二次元配列で格納

  //チャットワークAPI
  var client = ChatWorkClient.factory({
    token: CW_TOKEN
  });

  //各スレッド×メール
  for (var i = myMsgs.length - 1; i >= 0; i--) {
    var msgsInThread = myMsgs[i];
    for (var j = 0; j < msgsInThread.length; j++) {
      var msg = msgsInThread[j];

      //未読のみ
      if (msg.isUnread()) {
        //メールを既読にする
        msg.markRead();
        //添付ファイルを処理
        var filelist = ""
        var myFolder = DriveApp.getFolderById("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); //フォルダを取得
        var attachments = msg.getAttachments(); //添付ファイルを取得
        for(var k in attachments){
          var file = myFolder.createFile(attachments[k]); //ドライブに添付ファイルを保存
          filelist = filelist + "\n" + attachments[k].getName() + "\n" + file.getUrl()
        }

        //メッセージ作成
        var msgBody = "[To:" + CW_TO + "]" + 
                      "[info]" +
                          "[title]" + msg.getSubject() + "[/title]" +
                          msg.getFrom() + "[hr]" +
                          msg.getPlainBody().slice(0,5000) + "[hr]" +
                          msg.getDate() + filelist +
                      "[/info]";

        //チャットワークに送る
        client.sendMessage({
          room_id: CW_ROOM,
          body: msgBody
        });
      }
    }
  }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1