Skip to content

Instantly share code, notes, and snippets.

@nikuyoshi
Created August 18, 2014 16:07
Show Gist options
  • Save nikuyoshi/55dce7a71416e6bfcfa8 to your computer and use it in GitHub Desktop.
Save nikuyoshi/55dce7a71416e6bfcfa8 to your computer and use it in GitHub Desktop.
1週間分のGoogleドライブのメモをまとめて送信するGoogleAppsScript
// 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