GAS에서 Gmail에서 수신하는 특정 이메일을 LINE으로 보내기
13347 단어 LINEmessagingAPIlinebotgas
목적
Gmail에서받은 중요한 이메일
Google Apps Script(GAS)와 LINE의 Messaging API를 사용하여 LINE에 알리도록 하는 것입니다.
계기
Gmail 수신 메일 중에서 빨리 알고 싶은 메일이 있습니다 (이번 예에서는 화재시 알림 메일)
LINE에 통지를 받게 하면, 편리하다고 느끼 작성했습니다.
개발
개발 공정으로 크게 나누어
Gmail 수신 메일 중에서 빨리 알고 싶은 메일이 있습니다 (이번 예에서는 화재시 알림 메일)
LINE에 통지를 받게 하면, 편리하다고 느끼 작성했습니다.
개발
개발 공정으로 크게 나누어
가 있으므로 각각 설명하겠습니다.
LINE측 설정
서버에서 LINE으로 메시지를 보내려면 Messaging API이 필요합니다.
Messaging API로 할 수 있는 것은 두 가지가 있습니다.
프리 플랜에서는 2019/12 시점에서 1월 1,000통까지 송신 가능합니다.
htps //w w.ぃねび… 이 m/ぃねあt_みgらちおん/
이번에는 푸시 메시지를 보내는 방법에 대해 설명합니다.
아래에 따라 등록합니다. ※LINE Developer 계정이 없는 경우는 계정 등록에서
ぇぺぺrs. 네. 비 · 자 / 도 cs / 메사 긴 g 아피
공급자 만들기
LINE Developer에 로그인, 아래 순서대로 등록합니다.
※ 앱을 제공하는 회사, 고객, 브랜드 또는 기타 조직의 이름이 적절합니다
채널 만들기
만든 공급자의 채널 설정 탭에서 Messaging API를 클릭하고,
아래가 필수이므로 임의의 것을 입력합니다.
약관에 동의하고 만들기를 클릭하면 채널이 만들어집니다.
사용자 ID, 액세스 토큰 발급
푸시 메시지를 보내려면 채널의 사용자 ID, 액세스 토큰이 필요합니다.
유저 ID는 채널 작성시에 부여되고 있으므로, 액세스 토큰의 발행을 여기에서 실시합니다.
방금 만든 채널 중에서 Messaging API 설정의 탭을 클릭하십시오.
맨 아래 채널 액세스 토큰 발행을 클릭하면 발행됩니다.
GAS 개발
notification.js
function main() {
const gmailSearchString = "[email protected]"; //Gmailで検索する際の文字列を入れる
//メール内容を取得
const threads = GmailApp.search(gmailSearchString, 0, 1); //最新の一件
const latestMail = GmailApp.getMessagesForThreads(threads)[0][0];
const mailBody = latestMail.getPlainBody(); //メール本文
const mailId = latestMail.getId(); //メールID
// シートに同じメールがある場合は処理終わり
if(isExistMailInSheet(mailId)){
return;
}
const response = LINEMessagingApiPush(mailBody);
//response.getContentText("UTF-8"); //デバッグ用、正常なら空の配列が返る
writeMailInSheet(latestMail);
}
// シートにメールが存在するか
function isExistMailInSheet(mailId){
const sqlTarget = SpreadSheetsSQL.open("(SpreadSheetのID)", "SpreadSheetのシート名");
const data = sqlTarget.select(["メールID"]).filter('メールID = ' + mailId).result();
if(data.length >= 1){
return true;
}
return false;
}
// シートにデータの書き込み
function writeMailInSheet(mail){
const sheet = SpreadsheetApp.getActive().getSheetByName("火災メール一覧");
sheet.insertRowAfter(1); //空行の差し込み
sheet.getRange("A2").setValue(mail.getId()); //メールID
sheet.getRange("B2").setValue(mail.getDate()); //送信日時
sheet.getRange("C2").setValue(mail.getPlainBody()); //メール本文
}
//LINE通知
function LINEMessagingApiPush(text) {
const accessToken = "(LINE DevelopersのChannel Access Token)"
const to = "(LINE DevelopersのuserID)"
const url = "https://api.line.me/v2/bot/message/push";
const headers = {
"Content-Type" : "application/json; charset=UTF-8",
'Authorization': 'Bearer ' + accessToken,
};
const postData = {
"to" : to,
"messages" : [
{
'type':'text',
'text':text,
}
]
};
const options = {
"method" : "post",
"headers" : headers,
"payload" : JSON.stringify(postData)
};
return UrlFetchApp.fetch(url, options);
}
처리 내용
이번 스프레드시트를 DB로 취급하여 과거에 전송된 것의 관리를 실시했습니다.
2. 중복 체크에 대해 SpreadSheetSQL 라이브러리를 사용했습니다.
참고로 한 기사 :
htps : // 코 m / 카지노 후 / ms / 1 8 8 d4 굳 bfb5c3c886db
htps : // 코 m / 로아나 0229 / ms / 후아 931f 또는 bc57f193620
htps : // 코 m / n_ 오시미 / ms / 아 1 아 02 03093825 f41 01
프로덕션 도입(트리거 설정)
GAS의 트리거는 가능한 한 실시간으로 설정하고 싶기 때문에, 1분 간격으로 설정했습니다.
이렇게 짧은 간격으로 설정할 수 있는 GAS 대단하다.
결과
LINE Developer 채널의 Messaging API 설정에 있는 QR 코드에서
친구를 등록하고 GAS를 이동합니다.
이것으로 현장으로 빨리 갈 수 있을거야…
불의 근원에는 조심하십시오.
Reference
이 문제에 관하여(GAS에서 Gmail에서 수신하는 특정 이메일을 LINE으로 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/object97/items/6a9b40ab0be95ef4a3c0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GAS에서 Gmail에서 수신하는 특정 이메일을 LINE으로 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/object97/items/6a9b40ab0be95ef4a3c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)