定例ミーティングの資料とか毎週同じフォーマット使うことって多いですよね?
でも、毎週自分でコピーするとかだるいじゃないですか・・・
「今週の資料まだっすか?」とか。
勝手にコピーしなよ!とか思うわけですよ。
スクリプト
以下のスクリプトを自分のドライブに保存してスケジュール実行しておいて下さい。
フォルダIDはフォルダのURLの末尾
タイトルのフォーマットを設定して下さい。
定例の曜日を指定して下さい
※ 初回実行時に認証入ると思うのでテスト実行しておくと良いです
copydocument.gs
var outputFile;
var result;
function copyReport(){
var titleFormat = "資料名のフォーマット yyyyMMdd";
var folder = DriveApp.getFolderById("資料フォルダのULRの末尾の英数字を入れる");
// folder = ""; // test folderとか適当に作ってやるといいです
var weeknum = 5; // 定例の日付(0=日曜日、 なので5=金曜日)
// 先週のファイルを取得
var date_last = new Date();
var over_days = date_last.getDay() - weeknum ;
over_days = over_days < 0 ? 7 + over_days : over_days;
date_last.setDate(date_last.getDate() - over_days);
var date_new = new Date();
date_new.setDate(date_last.getDate() + 7);
var filename_last = Utilities.formatDate(date_last,"GMT+09:00",titleFormat);
var filename_new = Utilities.formatDate(date_new,"GMT+09:00",titleFormat);
Logger.log(filename_last + " -> " + filename_new);
var files = folder.getFilesByName(filename_new);
var file_new = (files.hasNext()) ? files.next() : undefined;
if (file_new != undefined) {
Logger.log("今週のファイルがすでに存在します。");
return;
}
files = folder.getFilesByName(filename_last);
var file_last = (files.hasNext()) ? files.next() : undefined;
if (file_last == undefined) {
Logger.log("先週のファイルが見つかりません。");
return;
}
file_new = file_last.makeCopy(filename_new, folder);
var doc_new = DocumentApp.openById(file_new.getId());
// 本文の置換
// 本文中の日付を置き換える
doc_new.getBody().replaceText(
Utilities.formatDate(date_last, "GMT+09:00", "yyyyMMdd"),
Utilities.formatDate(date_new, "GMT+09:00", "yyyyMMdd")
);
// 他にもルールがあればreplaceTextを追加していく
}
注意
- 金曜日以外テストしてないですすみません。
- 実施日にスクリプト実行すると来週分作りますので、前日までに資料は用意しましょう