GAS에서 Gmail을 Discord로 전송할 수 있습니다.
12586 단어 디스코드자바스크립트GoogleAppsScriptgasgmail
소개
여러분, Gmail, 사용하시나요?
상당한 쪽이 사용하고 있다고 생각합니다만, 안에는 메일 체크를 거슬러 경향이 있어, 그만 중요한 연락을 간과해 버린다, 라고 하는 사람도 있다고 생각합니다. 나도 그 혼자입니다.
그렇다고 해서 그것을 해결하는 솔루션(말하고 싶었다)으로서, Gmail의 내용을 평상시 사용하고 있는 채팅 툴에 전송 할 수 있으면 체크 누출이 줄어들지 않을까,라고 GAS를 사용해 실제로 해보았습니다.
이번에는 그 지식을 정리해 가고 싶습니다.
Discord 웹훅 얻기
우선, 이번에는 Discord를 사용하고 싶기 때문에, 메일을 전송하기 위한 Discord 서버를 빨리 만듭니다.
그런 다음 메일을 받을 수 있는 채널을 준비하고 아래의 설정 마크 버튼에서 설정 화면으로 들어갑니다.
Webhooks라는 항목이 있으므로 거기를 클릭하십시오.
Webhook 만들기를 클릭합니다.
나는 이미 Gmail이라는 이름으로 만들었기 때문에 한 개 표시되고 있네요.
나오는 화면에서 임의의 이름을 붙이면, Webhook의 URL이 발행되므로 보관해 둡니다. 나중에 사용합니다.
또, 이 URL에 액세스하면 Token이 손에 들기 때문에 브라우저로 액세스 해 취득해 둡니다.
GAS 쓰기
만약을 위해 설명해 두면, GAS는
Google Apps Script
의 약자로 JavaScript와 비슷한 언어를 사용하여 Google의 서비스와 연계하거나 한 도구를 만들 수 있습니다.Google의 서비스와 연동하므로 당연히 Gmail도 호출할 수 있습니다.
이것은 스프레드시트에서 수정할 수 있습니다.
여기 도구라는 버튼을 눌러 스크립트 편집기를 선택하면 스크립트 편집 화면으로 이동합니다.
기본은 임의의 함수를 두고, 지정된 트리거로 그 함수를 기동시킨다고 하는 느낌입니다.
그럼 실제로 코드를 써 갑니다.
먼저 Discord Webhook에 메시지를 POST하는 함수를 만듭니다.
function discord(postMsg){
const webhooks = '取得したURL'
const token = '取得したToken';
const channel = 'Discordで投稿するチャンネル名';
const userName = 'Discordで表示する名前';
const parse = 'full';
const methods = 'post';
const payload = {
'token': token,
'channel': '#mails',
'content' : postMsg,
'parse': parse,
};
const params = {
'method': methods,
'payload' : payload,
'muteHttpExceptions': true,
};
response = UrlFetchApp.fetch(webhooks, params);
}
그런 다음 Gmail의 정보를 일정 간격으로 검색하여 내용을 Discord 함수에 전달하여 실행하는 함수를 만듭니다.
function mails(){
var searchQuery = "Gmailで取得したい検索クエリ(例:to([email protected]))";
var dt = new Date();
//メールをチェックする頻度を指定します。短すぎるとGmailの制限に引っかかります。
const checkSpanMinute = 30;
dt.setMinutes(dt.getMinutes() - checkSpanMinute);
var threads = GmailApp.search(searchQuery);
var msgs = GmailApp.getMessagesForThreads(threads);
for(var i = 0; i < msgs.length; i++) {
var lastMsgDt = threads[i].getLastMessageDate();
if(lastMsgDt.getTime() < dt.getTime()) {
break;
}
for(var j = 0; j < msgs[i].length; j++) {
var msgDate = msgs[i][j].getDate();
var msgBody = msgs[i][j].getPlainBody();
var msgFrom = msgs[i][j].getFrom();
var matches = msgFrom.match(/"(.+)".*<(.+)>/)
{
var subject = msgs[i][j].getSubject();
//取得したデータを最終的に受け取りたいフォーマットに整えます。Discordでは[```]を引用符として使えるので前後に着けています。
var postMsg = "```" + "\n" +
Utilities.formatDate(msgDate, 'Asia/Tokyo', 'yyyy/MM/dd hh:mm:ss') + "\n" +
"件名:" + subject + "\n" +
"[hr]" +
msgBody +
"```";
discord(postMsg);
}
}
}
}
이런 느낌의 스크립트를 써 줍니다.
완료되면 일단 실행 -> 함수를 지정하여 실행, 에서 mails 함수를 실행하여 문제가 있는지 확인합시다.
트리거 설정
편집 -> 현재 프로젝트의 트리거에서 트리거 설정 화면에 넣습니다.
트리거를 추가에서 시간 중심으로
checkSpanMinute
에서 설정한 범위에서 mails 함수를 실행하도록 설정합니다.이제 나중에 Google 서버에서 스크립트를 자동으로 실행할 수 있습니다.
요약
이제 자주 사용하는 도구로 Gmail을 얻을 수 있습니다.
실제로 운용하고 나서 상당히 메일의 확인 누출이 줄었습니다.
무엇보다, 메일의 연락과 평상시의 연락을 같은 툴로 관리할 수 있다고 하는 것이 QOL 높아서 좋은 느낌입니다.
여러분도 GAS를 사용하여 몸의 주위를 조금 편리하게 해 보는 것은 어떻습니까?
Reference
이 문제에 관하여(GAS에서 Gmail을 Discord로 전송할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ihcamonoihS/items/fc8487d55a4feefa5dba텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)