Skip to content

Instantly share code, notes, and snippets.

@W-Yoshida
Last active April 29, 2021 01:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save W-Yoshida/ce9fd6b08e5650657dba80e570641b18 to your computer and use it in GitHub Desktop.
Save W-Yoshida/ce9fd6b08e5650657dba80e570641b18 to your computer and use it in GitHub Desktop.
FAX受信メールのPDFをGoogleドライブにアップロードしてSlack通知するGAS

FAX受信メールのPDFをGoogleドライブにアップロードしてSlack通知するGAS

概要

  • 複合機で受信したFAXをGmailに転送している(前提環境)
  • Gmailで受け取ったFAX受信メールに添付されているPDFをGoogle共有ドライブにアップロードする
  • アップロード完了後、SlackにFAX受信があった旨を通知する
  • GASをタスクで定期実行し、FAX受信後に自動的にアップロード・通知されるようにする
function uploadFaxPDFtoDrive() {
var folderId = '[YourGoogleSharedDriveId]';
var folder = DriveApp.getFolderById(folderId);
var label = GmailApp.getUserLabelByName('アップロード済');
//FAXメールの抽出条件
var threads = GmailApp.search('subject:FAX filename:pdf has:nouserlabels', 0, 500);
//対象のメールが存在しない場合は処理を終了
if(threads.length == 0)
{
console.log("新着メールなし");
return;
}
//Googleドライブに添付ファイルをアップロード
try
{
threads.forEach(function(thread){
var messages = GmailApp.getMessagesForThread(thread);
for(var i = 0; i < messages.length; i++) {
//スレッドに既読メールが含まれる場合は処理をスキップ
if(messages[i].isUnread())
{
var attachments = messages[i].getAttachments();
for(var j = 0; j < attachments.length; j++){
folder.createFile(attachments[j]);
}
}
}
//アップロード済みのスレッドを既読にしてラベルを付ける
thread.addLabel(label);
thread.markRead();
});
//Slackへ通知
var botName = 'SlackBot';
var botIcon = ':fax:';
var slackWebhookURL = '[YourSlackWebhookURL]';
var slackMessage = 'FAXが届きました!\n' + 'https://drive.google.com/drive/folders/' + folderId;
var jsonData =
{
"username" : botName,
"icon_emoji" : botIcon,
"text" : slackMessage
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(slackWebhookURL, options);
}catch(e){
console.log(e);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment