サンプルシナリオ
金曜日に公開予定のスライドがある。
毎週 資料-2022-01-07
という名前でスライドを用意する。
毎週月曜日に先週のスライド (例: 資料-2022-01-07
) をコピーして次の金曜日の新しいスライド (例: 資料-2022-01-14
) を作成する。
方法
-
資料-2022-01-07
を用意する。 - ファイルコピースクリプトを作成する。
- コードをコピーする。
- トリガーを作成する。
資料-2022-01-07
を用意する。
最初のコピー元のファイルです。例は Google スライドですが、ほかファイルでも可能です。
ファイルコピースクリプトを作成する。
ドライブの画面で新規作成を選択します。
「その他」->「Google Apps Script」を選択します。
以下のようなコード編集画面になります。
コードをコピーする。
function main()
{
const FolderId = "[対象のファイルがある Google ドライブのフォルダ ID]";
const SlideNameTemplate = "資料-%s";
const FRIDAY = 5;
// 次の資料名の日付
const nextDate = getNextDayDate(FRIDAY);
const nextDateString = Utilities.formatDate(nextDate, "Asia/Tokyo", "yyyy-MM-dd");
// 前の資料名の日付
const prevDate = new Date(nextDate)
prevDate.setDate(prevDate.getDate() - 7);
const prevDateString = Utilities.formatDate(prevDate, "Asia/Tokyo", "yyyy-MM-dd");
const nextFileName = Utilities.formatString(SlideNameTemplate, nextDateString);
const prevFileName = Utilities.formatString(SlideNameTemplate, prevDateString);
let folder = DriveApp.getFolderById(FolderId);
// 作成する予定のファイルがすでに存在するなら終了する。
while (folder.getFilesByName(nextFileName).hasNext())
{
return;
}
let files = folder.getFilesByName(prevFileName);
// コピー元のファイルが存在したら、コピーする。
while (files.hasNext())
{
let prevFile = files.next();
// コピー後のファイル名を指定する。
prevFile.makeCopy(nextFileName);
return;
}
}
// 次の dayOfWeek (日:0 〜土: 6)曜日の日付を取得する。
function getNextDayDate(dayOfWeek)
{
let nextDate = new Date();
let days = dayOfWeek - nextDate.getDay()
days = days <= 0 ? days + 7 : days;
nextDate.setDate(nextDate.getDate() + days);
return nextDate;
}
曜日指定
main 部分
const FRIDAY = 5;
const nextDate = getNextDayDate(FRIDAY);
...
// 次の dayOfWeek (日:0 〜土: 6)曜日の日付を取得する。
function getNextDayDate(dayOfWeek)
main 部分の FRIDAY は金曜日を表す数値を指定しています。プログラミング上、曜日を数値で表すことがあります。
getNextDayDate のコメントの通り曜日を表す数値は、日曜日は0,月曜日は1,というように進むごとに値が1ずつ増えていき、土曜日は6になります。
別の曜日にしたいときは FRIDAY 部分を変更します。
フォルダID
const FolderId = "[対象のファイルがある Google ドライブのフォルダ ID]";
フォルダIDとは、Googleドライブ上でのフォルダのIDです。URL から確認できます。
URLの folders/
以降の文字列です。もしクエリ文字列(?
以降のURLパラメータ)がついていたらそれは含めません。
例: https://drive.google.com/drive/folders/[フォルダ ID]
トリガーを追加する。
トリガーとは、自動で実行する仕組みです。
今回は月曜日のお昼に自動で実行してほしいです。
Apps Script の画面で設定できます。
左の時計アイコンのトリガーを選択します。
「トリガーを追加」をクリックします。
以下のように指定します。
イベントのソースとは、どんな条件で自動実行するかの指定方法です。
今回の目的だと時間主導型の「週ベースのタイマー」で毎週を指定できます。
時刻は1時間の幅で指定できます。分単位まで指定したい場合、以下の記事を参考します。