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が設定できないとのこと
}
}
}