Created
August 18, 2014 16:07
-
-
Save nikuyoshi/55dce7a71416e6bfcfa8 to your computer and use it in GitHub Desktop.
1週間分のGoogleドライブのメモをまとめて送信するGoogleAppsScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 1週間分のGoogleドライブのドキュメントをまとめて送信する関数 | |
function sendWeeklyMemo() { | |
var file = DocsList.getAllFiles(); | |
var date = new Date(); | |
var today = date.getTime(); | |
var aWeekAgo = calculateDate(date.getYear(), date.getMonth() + 1, date.getDate(), -7); | |
var createdDate = null; | |
var weeklyMemoList = new Array(); | |
var fileType = null; | |
var attachedDocsList = new Array(); | |
var ct = 0; | |
var msg = new Array(); | |
// 1週間分のドキュメントオブジェクトを格納する | |
for(var i = 0; i < file.length; i++){ | |
createdDate = file[i].getDateCreated(); | |
Logger.log("【ファイル名】" + file[i].getName()); | |
Logger.log("【作成日時】"+ createdDate); | |
// 直近1週間のものかどうかを判定する | |
if((today - createdDate ) / ( 1000 * 60 * 60 * 24 ) <= 7){ | |
Logger.log(">> 直近1週間のドキュメントです。"); | |
weeklyMemoList.push(file[i]); | |
} else { | |
Logger.log(">> 1週間以上前のドキュメントです。"); | |
} | |
Logger.log("==="); | |
} | |
Logger.log("---"); | |
// ファイルの種類がドキュメントのものだけを配列に格納する | |
for(var i = 0; i < weeklyMemoList.length; i++){ | |
fileType = weeklyMemoList[i].getFileType(); | |
if('document'.equals(fileType) && weeklyMemoList[i] !== null && weeklyMemoList[i] !== ""){ | |
Logger.log('【ファイルの種類:】 ' + weeklyMemoList[i].getFileType()); | |
Logger.log('【ファイル名】' + weeklyMemoList[i].getName()); | |
attachedDocsList.push(weeklyMemoList[i].getBlob().getAs('application/pdf')); | |
attachedDocsList[ct++].setName(weeklyMemoList[i].getBlob().getName()); | |
}else{ | |
Logger.log('【ファイルの種類】' + weeklyMemoList[i].getFileType()); | |
} | |
} | |
Logger.log("---"); | |
today = date.getYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate(); | |
msg.push(aWeekAgo + "〜" + today + "のメモ"); | |
Logger.log("【送信メッセージのタイトル】" + msg); | |
// メール送信 | |
GmailApp.sendEmail('hoge@fuga.com', msg, '添付ファイルを参照してください。', { | |
attachments: attachedDocsList, | |
}); | |
var labels = GmailApp.getUserLabels(); | |
var hasLabel = false; | |
for (var i = 0; i < labels.length; i++) { | |
if(labels[i].getName() === '1週間分のメモ'){ | |
hasLabel = true; | |
} | |
} | |
if(hasLabel === false){ | |
GmailApp.createLabel('1週間分のメモ'); | |
} | |
var threads = GmailApp.search('from:hoge@fuga.com subject:メモ') | |
var label = GmailApp.getUserLabelByName("1週間分のメモ"); | |
for(var i = 0; i < threads.length; i++){ | |
threads[i].addLabel(label); | |
} | |
Logger.log('【メールを送信しました】'); | |
} | |
// n日後、n日前の日付を求める関数 | |
function calculateDate(year, month, day, addDays) { | |
var date = new Date(year, month - 1, day); | |
var result = new String(); | |
var baseSec = date.getTime(); | |
var addSec = addDays * 86400000; | |
var targetSec = baseSec + addSec; | |
date.setTime(targetSec); | |
result = date.getYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate(); | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment