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); | |
} | |
} |