【GAS】 Gmail을 정기적으로 확인하고 새 메일을 Slack에 통지
소개
배경
평소 메일 매거진 등 메일이 많이 와서 스마트 폰의 알림이 시끄럽기 때문에 멈추고 싶습니다.
송신원마다 모두 멈추면 가끔 오는 중요 메일 등을 눈치채지 못한다
스마트 폰의 메일 취득 간격을 늘리면 즉시보고 싶은 메일이 오지 않습니다.
그래서 일단 아카이브하고 정기적으로 메일의 제목을 취득하고 slack에 통지하도록 했다
참고로 한 것
[결정판] GAS에서 Gmail 검색 결과를 스프레드 시트로 추출하는 방법
【초보자용】GAS를 사용해 Slack에 자동 통지
설계 개요
다음 동작을 수행
다음 동작을 수행
사전 준비
Gmail 설정
즉시 알림이 필요없는 이메일은 아래 필터를 설정합니다.
슬랙 설정
왼쪽 열 아래쪽에 있는 Add Apps를 클릭합니다.
"incoming-webhook"을 검색하여 설치
incoming-webhook 설정 화면에서 Add Configuration을 클릭하십시오.
게시할 채널을 선택하고 Add Incoming WebHooks integration을 클릭합니다.
※여기에서는 gmail 채널을 선택
그러면 「Webhook URL」이 작성된다.
나중에 사용하기 때문에 삼가 해주십시오.
GAS 설정
Google 드라이브에서 새로 만들기를 클릭하고 Google Apps Script를 선택합니다.
아래의 스크립프를 복사합니다.
※일부 수정 개소 있어(2행째)
mail.gsfunction sendToSlack(message) {
var postUrl = '<Slack Webhook URL>'; // 先程取得した Slack の Webhook URLを指定する
var username = 'GmailBot'; // 通知時に表示されるユーザー名
var icon = ':hatching_chick:'; // 通知時に表示されるアイコン
var jsonData =
{
"username" : username,
"icon_emoji": icon,
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
function main() {
var messages = 'Gmail Check Start!\n';
var after = parseInt(((new Date()).getTime() - 13 * 60 * 60 * 1000) / 1000); //13時間前を指定
var labels = GmailApp.getUserLabels(); //ラベル一覧を取得
for (var i = 0; i < labels.length; i++) {
var targetLabel = "label:" + labels[i].getName();
var searchTarget = targetLabel + ' after:' + after
var subjects = ''
var loopcount = 0;
GmailApp
.search(searchTarget, 0, 10)
.forEach(function (thread) {
thread.getMessages().forEach(function (message) {
var subject = message.getSubject(); //メールの件名を取得
subjects += subject + "\n"
loopcount++;
});
});
if (loopcount === 0) continue;
messages += "\n" + targetLabel + "\n" + subjects
}
sendToSlack(messages)
}
테스트 실행
main 함수를 지정하고 실행 버튼▶을 클릭합니다.
※첫회만 권한 허가에 대해서, 동의가 요구되므로, 동의한다
slack에 제대로 게시되면 성공!
이런 느낌이 될 것
정기 실행
프로젝트 트리거를 클릭
트리거 추가를 클릭하고 아래 이미지와 같이 설정
마찬가지로 실행시간을 '오후 10시~11시'로 설정한 트리거 추가
※트리거는 이 범위에서 실행되므로 매회 변동한다
※그 때문에, gas 프로그램의 after를 13시간으로 하고 있다
사이고에게
여러 계정을 확인하는 방법을 살펴봤는데 잘 모르겠습니다.
우선, 각 계정마다 같은 설정을 할 수밖에 없을 것 같다.
누군가, 방법을 아시면 교시해 주세요.
Reference
이 문제에 관하여(【GAS】 Gmail을 정기적으로 확인하고 새 메일을 Slack에 통지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kohei-kuwata/items/e526ebf31df9936299df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function sendToSlack(message) {
var postUrl = '<Slack Webhook URL>'; // 先程取得した Slack の Webhook URLを指定する
var username = 'GmailBot'; // 通知時に表示されるユーザー名
var icon = ':hatching_chick:'; // 通知時に表示されるアイコン
var jsonData =
{
"username" : username,
"icon_emoji": icon,
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
function main() {
var messages = 'Gmail Check Start!\n';
var after = parseInt(((new Date()).getTime() - 13 * 60 * 60 * 1000) / 1000); //13時間前を指定
var labels = GmailApp.getUserLabels(); //ラベル一覧を取得
for (var i = 0; i < labels.length; i++) {
var targetLabel = "label:" + labels[i].getName();
var searchTarget = targetLabel + ' after:' + after
var subjects = ''
var loopcount = 0;
GmailApp
.search(searchTarget, 0, 10)
.forEach(function (thread) {
thread.getMessages().forEach(function (message) {
var subject = message.getSubject(); //メールの件名を取得
subjects += subject + "\n"
loopcount++;
});
});
if (loopcount === 0) continue;
messages += "\n" + targetLabel + "\n" + subjects
}
sendToSlack(messages)
}
main 함수를 지정하고 실행 버튼▶을 클릭합니다.
※첫회만 권한 허가에 대해서, 동의가 요구되므로, 동의한다
slack에 제대로 게시되면 성공!
이런 느낌이 될 것
정기 실행
프로젝트 트리거를 클릭
트리거 추가를 클릭하고 아래 이미지와 같이 설정
마찬가지로 실행시간을 '오후 10시~11시'로 설정한 트리거 추가
※트리거는 이 범위에서 실행되므로 매회 변동한다
※그 때문에, gas 프로그램의 after를 13시간으로 하고 있다
사이고에게
여러 계정을 확인하는 방법을 살펴봤는데 잘 모르겠습니다.
우선, 각 계정마다 같은 설정을 할 수밖에 없을 것 같다.
누군가, 방법을 아시면 교시해 주세요.
Reference
이 문제에 관하여(【GAS】 Gmail을 정기적으로 확인하고 새 메일을 Slack에 통지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kohei-kuwata/items/e526ebf31df9936299df
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여러 계정을 확인하는 방법을 살펴봤는데 잘 모르겠습니다.
우선, 각 계정마다 같은 설정을 할 수밖에 없을 것 같다.
누군가, 방법을 아시면 교시해 주세요.
Reference
이 문제에 관하여(【GAS】 Gmail을 정기적으로 확인하고 새 메일을 Slack에 통지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kohei-kuwata/items/e526ebf31df9936299df텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)