Google Apps ScriptでDriveとGMail連携
2017-09-23(土)
参加者が撮った写真を自動でWebアルバムみたいに表示したい
という要望があったので,この手の連携となればIFTTTだろと調べてみたのだが,不特定多数からの受付が出来なさそうなので諦め。
GMailだとusername@gmail.comなアドレスについて,username+tag@gmail.comでも受信できる技があるので,それをトリガにGoogle Photosに保存できるだろと少し調査。 取り敢えずGoogle Driveなら直ぐ出来そうなので
特定のアドレスに送られたメールの添付ファイルをGoogle Driveのフォルダに自動で保存する(メールはゴミ箱へ)
という処理に。
- e-mail: username+tag@gmail.com
- Google Driveのフォルダ: Test
で,ググって出てきたスクリプトだと
var subject = Threads[i].getMessages()[0].getSubject();
if(subject=="Target"){
みたいな処理だったので,ならToでもできるだろって事で
var to = Threads[i].getMessages()[0].getSubject();
if(to=="username+tag@gmail.com"){
としたら,Outlookが
to:<username+tag@gmail.com>
で送ってくるのでFalseになる。調べたら部分一致はindexOfでイケるらしいので下記で成功。
function gmailFileUploader() {
var Threads = GmailApp.getInboxThreads();
for(var i=0;i<50;i++){
var status = Threads[i].isUnread();
if(status==true){
var to = Threads[i].getMessages()[0].getTo();
if(to.indexOf("username+tag@gmail.com")>-1){
var attachments = Threads[i].getMessages()[0].getAttachments();
var folders = DriveApp.getFoldersByName("Test");
while(folders.hasNext()){
var folder = folders.next();
for(var j = 0;j<attachments.length;j++){
var data = DriveApp.createFile(attachments[j]);
folder.addFile(data);
}
}
Threads[i].moveToTrash(); //保存終了したらゴミ箱に移動
}
}
}
}
Category: Memo Tagged: Javascript