今回成し遂げること
- カレンダーから予定を検索し、
- マスタードキュメントから雛形コピーし、
- 新規ドキュメントを生成し、そのURLを返す。
コード
##1. Googleカレンダーから1週間分の定例予定を抽出
カレンダーから予定を抽出する
CalendarApp.getDefaultCalendar().getEvents(now, end, {search: "検索したい文字列をかく"})[0];
補足:searchの他にもこんなoptionがあります。
start — 条件に一致する予定が複数ある場合に、何個目からスタートするかを指定(整数)
max — 条件に一致する予定が複数ある場合に、取得する予定の最大数を指定(整数)
author — 予定の作成者を指定(文字列)
search — 含まれる文字列を指定(文字列)
statusFilters[] — 参加状況のを指定(配列)
nowには今日、
endには1週間後を入れます。
今日と1週間後
var now = new Date();
var end = new Date(now.getTime() + (7 * 24 * 60 * 60 * 1000));// 一週間後
nowとendを入れたら、eventを取り出します。
カレンダーの内容を取り出す
var events = CalendarApp.getEvents(startTime, endTime);
for (var i in events) {
var TITLE = events[i].getTitle(); //title
var DATE = events[i].getDateFormatted(); //date
var DURATION = events[i].getDuration(); //duration
}
##2. マスタードキュメントから記事を新規生成
今日と1週間後
function makeArticle(TITLE,DATE,DURATION) {
//マスタードキュメントを定義
var targetDoc = DocumentApp.openById("xxxxxxxxxxxxxxxxxxxxx");
//IDを別に書き出して、以下のコードでもOK
//var targetDoc = DriveApp.getFileById(fileId);
//コピー先に名前をつけて作成。
var docName = '[[TITLE]]' + '[[DATE]]' + '_議事録';
var newdoc = targetDoc.makeCopy(docName + "_" + formattedDate);
//タイトル、本文をカレンダーの内容に書き換える
var title = newdoc.getName().replace('[[DATE]]',DATE).replace('[[TITLE]]',TITLE) ;
var body = newdoc.getBody()
.getText()
.replace('[[DATE]]', DATE)
.replace('[[DURATION]]', DURATION);
return {
title: title,
body: body
};
}
##3. 生成した記事を格納&URL取得
格納とURL取得
//ドキュメントを格納するフォルダを取得
var targetFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxx");
//指定したフォルダに所属(移動)させる
var docFile = DriveApp.getFileById(newdoc.getId());
targetFolder.addFile(docFile);
//作成したドキュメントURLを取得
var documentUrl = newdoc.getUrl();
Slackへの送り方はこちらをご覧ください。
<Slack>Slackに通知する関数を書いて、いつでも引用できるようにする(GAS)
参考
Google Apps Script (GAS) で毎週 30 分の雑務を自動化した話
Google DocumentをGoogle Apps Scriptでコピーする方法