LoginSignup
0
1

More than 3 years have passed since last update.

ChatworkのメッセージをGmailにバックアップするGoogle Apps Script

Last updated at Posted at 2020-01-28

Gmailに送られたメールをChatworkに転送する記事はよく見かけるけど(例えばこことか)、逆にChatworkのメッセージをGmailに転送するほうは見当たらなかったので、作ってみました。
Google Apps Scriptで下記のスクリプトを張り付ければOK。添付ファイルはGoogle Driveにアップロードしてリンクを貼ります。
下記で変更する箇所は、ChatworkのAPIトークン、メールアドレス周り、Google DriveのフォルダのID。
Gmailの制限で一日100通までしか送れないみたいなので、頻繁に投稿があるようなroomのバックアップは無理。

function getChat(){
  var CW_ID="XXXXXXXXXXXXXXXXXX"; //APIトークン
  var CW_ROOM="XXXX"; //room番号
  var url = "https://api.chatwork.com/v2/rooms/"+CW_ROOM+"/messages";

  var strTo="XXXXXXXXXXXXXXXXX"; //To 宛先のメールアドレス
  var strFrom="XXXXXXXXXXXXXXX"; //From 自分のGmailアカウント
  var strSender="XXXXXXX"; //差出人 適当に
  var DRIVE_ID="XXXXXXXXXXXXXXXXXXXXXXXXXXX"; //Google Driveで作っておいたフォルダのID

   var options =
   {
     headers : {"X-ChatWorkToken" : CW_ID},
     method : "get"
   };

  var response = UrlFetchApp.fetch(url,options);
  if(response.getContentText()){
  var json = JSON.parse(response.getContentText());
  for each(var obj in json){
    //Logger.log(obj.body);
    Logger.log(obj.account.name);
    Logger.log("\n\n");
    /* メール本文を準備 */
    var strSubject="[chatwork] "+obj.account.name;
    var strBody=obj.body;

    var strDownload = strBody.match(/\[download:(\d+)\]/);
    if(strDownload){
      Logger.log("test: "+strDownload+"\n");
      var strDownloadId = strDownload[1];
      var urlDown = "https://api.chatwork.com/v2/rooms/"+CW_ROOM+"/files/"+strDownloadId+"?create_download_url=1";
      var resDown = UrlFetchApp.fetch(urlDown,options);
      var jsonDown = JSON.parse(resDown.getContentText());
      Logger.log("url: "+jsonDown.download_url);
      var downFile = UrlFetchApp.fetch(jsonDown.download_url);
      var downFileBlob = downFile.getBlob().setName(jsonDown.filename);

      // 取得した画像をGoogle Driveにアップロード
      var file = DriveApp.createFile(downFileBlob);

      // 予め作っておいた画像フォルダの情報を取得
      var myFolder = DriveApp.getFolderById(DRIVE_ID); //フォルダを取得
      var file = myFolder.createFile(downFileBlob); //ドライブに添付ファイルを保存
      var strfile = jsonDown.filename + ": " + file.getUrl();
      var access = DriveApp.Access.ANYONE_WITH_LINK;
      var permission = DriveApp.Permission.VIEW;
      file.setSharing(access, permission);
      strBody=strBody+"\n"+strfile;

    }
    /* メールを送信 */
    GmailApp.sendEmail(
      strTo,
      strSubject,
      strBody,
      {
        from: strFrom,
        name: strSender
      }
    ); //MailAppではfromが設定できないとのこと
  }
  }
}
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