Google Apps Scriptを触ってみた

| コメントをどうぞ

今回はGoogle Apps Scriptについて紹介します。

Google Apps Scriptとは

Google Apps Scriptはサーバーサイドのスクリプト言語です。
JavaScriptでプログラムを作成することで、Google Appsの様々なサービスに対して処理を実行することができます。

Google Apps Script — Google Developers
https://developers.google.com/apps-script/?hl=ja

Google Apps Scriptを触ったことない人は、以下のサイトが参考になると思います。

ドットインストール – Google Apps Script入門
http://dotinstall.com/lessons/basic_google_apps_script

トリガー

Google Apps Scriptの細かい説明は省略しますが、個人的に気に入っている機能である「トリガー」について紹介します。

トリガーとは、作成したプログラムを定期的に実行してくれる機能です。
定期実行する方法としては、Cronやタスクスケジューラなどがありますが、トリガーは数クリックで設定ができてGoogleが実行してくれるという手軽さがとてもよいです。

Alt

以下の形式で定期実行の間隔を指定できます。

  • 特定の日時
    • YYYY-MM-DD HH:MM 形式の日付
  • 分タイマー
    • 1, 5, 10, 15, 30分ごと
  • 時タイマー
    • 1, 2, 4, 6, 8, 12時間ごと
  • 日タイマー
    • 午前0時~1時, 午前1時~2時, … , 午後11時~午前0時
  • 週タイマー
    • 毎週月曜日, 毎週火曜日, … 毎週日曜日
    • 午前0時~1時, 午前1時~2時, … , 午後11時~午前0時
  • 月タイマー
    • 1, 2, … ,31
    • 午前0時~1時, 午前1時~2時, … , 午後11時~午前0時

このトリガーの機能を利用して、議事録ファイルを作成するスクリプトを書いてみました。
要件は以下の通りです。

  • Googleドライブの議事録フォルダに議事録ファイルを作成する
  • 議事録テンプレートファイルからコピーして作成する
  • 議事録ファイルのタイトルにミーティングの日付けを含める
  • 毎週金曜日のミーティングの前に作成する
  • 金曜日が祝日の場合は木曜日の日付けをタイトルに含める

以下のスクリプトを作成して、トリガーで毎週木曜日の朝に定期実行します。

function createMinutesFile() {
  var today = new Date();
  var meetingDate = new Date();
  meetingDate.setDate(today.getDate() + 1);
  Logger.log("Next friday is holiday? " + isHoliday(meetingDate));

  // 金曜日が祝日の場合は木曜日の日付を設定
  var dd;
  if(isHoliday(meetingDate)){
    dd = meetingDate.getDate() - 1;
  } else {
    dd = meetingDate.getDate();
  }
  newFileTitle = "[" + meetingDate.getYear() + "/" + (meetingDate.getMonth() + 1) + "/" + dd + "][議事録]定例ミーティング";
  Logger.log("The title of new document is " + newFileTitle);

  // 議事録フォルダを取得
  var folder = DriveApp.getFolderById("*************************");
  var templateFile = DriveApp.getFileById("*************************");
  Logger.log("The title of new document is " + folder.getName());
  Logger.log("The title of new document is " + templateFile.getName());
  // テンプレートから議事録ファイルを作成する
  templateFile.makeCopy(newFileTitle, folder);
}

// 祝日チェック
function isHoliday(meetingDate) {
  var startDate = new Date();
  var endDate = new Date();
  startDate.setDate(meetingDate.getDate() - 1);
  endDate.setDate(meetingDate.getDate() + 1);
  var holidays = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com").getEvents(startDate, endDate);
  var isHoliday = false;
  if(holidays.length < 1){
    return isHoliday;
  }

  for (i = 0; i < holidays.length; i++) {
    var event = holidays[i];
    if (event.getStartTime().toDateString() == meetingDate.toDateString()) {
        isHoliday = true;
        break;
    }
  }
  return isHoliday;
}

作業としてはちょっとしたことですが、繰り返し行われる手作業を減らしていきたいです。

今回は、Google Apps Scriptの利用シーンを紹介しました。
Google Apps ScriptでGoogle Appsをより便利に活用していきたいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>