ChatworkAPI와 GAS로 새로운 메시지를 수시로 이메일로 보내기
소개
chatwork를 상용하고 있지 않지만,
chatwork를 사용하여 상호 작용할 수 있습니다.
또 그 교환을 적절히 메일에 보내 주었으면 하는 요망도 있었으므로, 그 요망에 응했습니다.
최근에는 로컬 서버를 세우는 것보다 GAS(Google App Script)를 이용하고 있습니다.
GAS 경유로 움직이면 이하의 메리트가 있어, 추천입니다.
절차
ChatworkAPI 사용 신청하기
ChatworkAPI는 여전히 미리 보기 버전이므로 제한적으로 게시됩니다.
API를 이용하려면 이용 신청이 필요합니다.
아래 링크에서 이용 신청하여 이용 가능하게 될 때까지 기다립니다.
htps //w w. 제대로 rk. 이 m/세 rゔぃせ/ぱcかげs/ちゃとぉrk/す bぱcかげs/아피/아 ply_베타. php
ChatworkAPI 토큰 얻기
API를 사용할 수 있게 되면 동작 설정 창에 API 게시 탭이 추가됩니다.
여기에서 토큰을 발행합니다.
↓
알림을 받고 싶은 채팅방 ID를 가져오기
채팅을 표시했을 때의 URL의 「rid」이후가 채팅 룸 ID입니다.
Google App Script 만들기
5g g D 리브에 로그인하여 새로 스프레드 시트 만들기 ※
※ GAS를 독립형으로 작성할 수도 있습니다만, 향후의 스프레드시트로부터의 읽기나 기입을 실시할 가능성이 있으므로 스프레드시트로부터 작성합니다.
스크립트 작성
이전에 얻은 API 토큰, 채팅방 ID 및 대상 이메일 주소를 지정합니다.
checkChatworkMessages를 실행하고 메시지가 있으면 메일이 도착하는지 확인합니다.
function checkChatworkMessages() {
var token = '<ChatworkAPIトークン>';
var roomId = '<room id>';
// API docのLink
// http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages
// デバッグ時はURLにforce=1パラメタを追加 → 強制で最新の100件を取得
var data = UrlFetchApp.fetch('https://api.chatwork.com/v1/rooms/' + roomId + '/messages', {
headers: {
'X-ChatWorkToken': token
},
method: 'get',
});
// Logger.log(data);
// 新しいメッセージがなければ終了
if (data == "") {
Logger.log('Not exist unread messages.');
return;
}
var json=JSON.parse(data);
var mailBody = ''; // メール本文
for (var i = 0; i < json.length; i++) {
mailBody += json[i]["body"] + "\n" + json[i]["account"]["name"] + "\n" + getFormattedDate(json[i]["send_time"]) + "\n\n";
}
if (mailBody !== '') {
sendMail(mailBody);
}
}
// メールを送信
// @param string メール本文を指定
// @return void
function sendMail(body) {
// 送信対象者をコンマ区切りで記載
var recipients = "tomoya.amachi@gmail,[email protected]";
var subject;
subject = "Chatwork通知メール";
MailApp.sendEmail(recipients.split(','), subject, body, {
noReply: true
});
}
// UnixTimestampをフォーマットして返す
// @param int Unixtimeを指定
// @return 10月10日10:30:23
function getFormattedDate(sendTime) {
var sendDate = new Date(sendTime*1000);
var month = sendDate.getMonth() + 1; // getMonthは 0~11で値が返る
var date = sendDate.getDate();
var hours = sendDate.getHours();
var minutes = "0" + sendDate.getMinutes();
var seconds = "0" + sendDate.getSeconds();
return month + '月' + date + '日' + hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
}
트리거 설정
마지막으로, 작성한 스크립트가 정기적으로 실행되도록 트리거를 설정합니다.
리소스 > 현재 프로젝트 트리거 > 지금 추가를 선택하고,
checkChatworkMessages를 1분 간격으로 작동하도록 설정한 후 저장합니다.
동작 확인
대상 룸에 새로운 글을 쓰고,
지정한 이메일 주소로 이메일을 보낼 수 있는지 확인하십시오.
마지막으로
비교적 간단하게 구현할 수 있었으므로, 앞으로는 스프레드시트에 룸 ID와 송신 메일 주소를 지정하면, 자동적으로 각 룸을 체크해 주는 스크립트를 만들지도 모릅니다.
그것도 간단하게 만들어지기 때문에, 조금 시간이 비어있어, 필요하게 되면 만들려고 합니다.
덧붙여서, 모든 메일은 Slack으로 전달됩니다. 그래서, 기본적으로는 Slack를 보고 있으면 괜찮게 되어 있습니다.
게다가 Franz (※각종 메세지 서비스/메일을 정리해 주는 서비스. 엄청 편리)를 이용해,
Slack 채널만 상시 표시하고, 필요한 경우 다른 메시지 서비스 등의 탭을 표시하도록 하고 있습니다.
매우 작업하기 쉽기 때문에 추천합니다.
Reference
이 문제에 관하여(ChatworkAPI와 GAS로 새로운 메시지를 수시로 이메일로 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomoyamachi/items/d324a0938e7212399386
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ChatworkAPI와 GAS로 새로운 메시지를 수시로 이메일로 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomoyamachi/items/d324a0938e7212399386텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)