GASでイベント名を取得して日報を自動作成!Event.getTitle()と定期実行の活用

GASでイベント名を取得して日報を自動作成!Event.getTitle()と定期実行の活用

本記事では、Google Apps Script(GAS)のEvent.getTitle()関数を活用して、Googleカレンダーのイベント名を取得し、日報を自動作成する方法を解説します。特に、定期実行による日報作成の自動化に焦点を当て、業務効率化に役立つ具体的なコード例とカスタマイズ方法を紹介します。

Event.getTitle()関数の基本

Event.getTitle()は、Googleカレンダーのイベントオブジェクトからイベント名(タイトル)を取得するための関数です。この関数を使うことで、イベントの内容をスクリプト内で利用できます。

Event.getTitle()の構文

event.getTitle()

ここでeventは、CalendarEventオブジェクトを表します。

日報自動作成のシナリオ

多くの企業で、従業員は毎日日報を作成し、その日の業務内容を報告する必要があります。しかし、手作業で日報を作成するのは時間がかかり、負担になることがあります。そこで、GASを使って日報作成を自動化することで、従業員の負担を軽減し、業務効率を向上させることができます。

実装例:カレンダーイベントから日報を作成しメール送信

以下の例では、指定した期間のGoogleカレンダーイベントからイベント名を取得し、日報を作成してメールで送信します。

ステップ1:必要なAPIの有効化

GASエディタから、リソース > Googleの拡張サービス を選択し、Calendar APIを有効にします。

ステップ2:スクリプトの作成

以下のコードをGASエディタに記述します。

function createDailyReport() {
// 設定
const calendarId = "your_calendar_id@group.calendar.google.com"; // カレンダーIDを設定
const startTime = new Date(); // 今日の日付
startTime.setHours(0, 0, 0, 0); // 今日の0時0分0秒
const endTime = new Date(); // 今日の日付
endTime.setHours(23, 59, 59, 999); // 今日の23時59分59秒
const recipientEmail = "your_email@example.com"; // 送信先のメールアドレス

// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendarId);

// 今日のイベントを取得
const events = calendar.getEvents(startTime, endTime);

// 日報の作成
let report = "本日の日報:
";
if (events.length > 0) {
for (let i = 0; i < events.length; i++) {
const event = events[i];
const eventTitle = event.getTitle();
const eventStartTime = Utilities.formatDate(event.getStartTime(), "JST", "HH:mm");
const eventEndTime = Utilities.formatDate(event.getEndTime(), "JST", "HH:mm");
report += `- ${eventStartTime} - ${eventEndTime} ${eventTitle}
`;
}
} else {
report += "本日の予定はありません。";
}

// メールを送信
const subject = "【日報】" + Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");
const body = report;
MailApp.sendEmail(recipientEmail, subject, body);
}

ステップ3:トリガーの設定

GASエディタから、トリガーを設定し、毎日指定した時間にcreateDailyReport関数が実行されるようにします。例えば、毎日18時に実行するように設定します。

コードの解説

  • CalendarApp.getCalendarById(calendarId): 指定したカレンダーIDのカレンダーを取得します。
  • calendar.getEvents(startTime, endTime): 指定した期間のイベントを取得します。
  • event.getTitle(): イベント名を取得します。
  • MailApp.sendEmail(recipientEmail, subject, body): メールを送信します。

カスタマイズ方法

  • カレンダーIDの変更: calendarId変数を変更することで、異なるカレンダーからイベントを取得できます。
  • メール送信先の変更: recipientEmail変数を変更することで、異なるメールアドレスに日報を送信できます。
  • 日報の形式変更: report変数の形式を変更することで、日報の内容をカスタマイズできます。
  • 時間形式の変更: Utilities.formatDateの書式を変更することで、イベントの開始・終了時間の表示形式を変更できます。

よくある問題とトラブルシューティング

  • カレンダーAPIが有効になっていない: GASエディタからCalendar APIを有効にしてください。
  • カレンダーIDが間違っている: 正しいカレンダーIDを設定してください。
  • メールが送信されない: スクリプトの実行権限を確認し、必要な権限を付与してください。

応用例

このスクリプトを応用することで、以下のようなことも可能です。

  • スプレッドシートへの記録: 日報の内容をスプレッドシートに記録する。
  • Slackへの通知: 日報の内容をSlackに通知する。
  • イベントの詳細情報を取得: event.getDescription()などでイベントの詳細情報を取得し、日報に含める。

まとめ

GASのEvent.getTitle()関数と定期実行を組み合わせることで、Googleカレンダーのイベント名を取得し、日報を自動作成することができます。この自動化により、日報作成にかかる時間を削減し、業務効率を向上させることができます。ぜひ、本記事で紹介したコード例を参考に、日報作成の自動化に挑戦してみてください。

// 例:当日のイベントがない場合も考慮した日報作成
function createDailyReport() {
// 設定
const calendarId = "your_calendar_id@group.calendar.google.com"; // カレンダーIDを設定
const startTime = new Date(); // 今日の日付
startTime.setHours(0, 0, 0, 0); // 今日の0時0分0秒
const endTime = new Date(); // 今日の日付
endTime.setHours(23, 59, 59, 999); // 今日の23時59分59秒
const recipientEmail = "your_email@example.com"; // 送信先のメールアドレス

// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendarId);

// 今日のイベントを取得
const events = calendar.getEvents(startTime, endTime);

// 日報の作成
let report = "本日の日報:
";
if (events.length > 0) {
events.forEach(event => {
const eventTitle = event.getTitle();
const eventStartTime = Utilities.formatDate(event.getStartTime(), "JST", "HH:mm");
const eventEndTime = Utilities.formatDate(event.getEndTime(), "JST", "HH:mm");
report += `- ${eventStartTime} - ${eventEndTime} ${eventTitle}
`;
});
} else {
report += "本日の予定はありません。
";
}

// メールを送信
const subject = "【日報】" + Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd");
const body = report;
MailApp.sendEmail(recipientEmail, subject, body);
}

// 例:スプレッドシートに日報を追記する
function createDailyReportToSpreadsheet() {
// 設定
const calendarId = "your_calendar_id@group.calendar.google.com"; // カレンダーIDを設定
const startTime = new Date(); // 今日の日付
startTime.setHours(0, 0, 0, 0); // 今日の0時0分0秒
const endTime = new Date(); // 今日の日付
endTime.setHours(23, 59, 59, 999); // 今日の23時59分59秒
const spreadsheetId = "your_spreadsheet_id"; // スプレッドシートIDを設定
const sheetName = "日報"; // シート名を設定

// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendarId);

// 今日のイベントを取得
const events = calendar.getEvents(startTime, endTime);

// スプレッドシートを取得
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
const sheet = spreadsheet.getSheetByName(sheetName);

// 日報の作成
let report = [];
if (events.length > 0) {
events.forEach(event => {
const eventTitle = event.getTitle();
const eventStartTime = Utilities.formatDate(event.getStartTime(), "JST", "HH:mm");
const eventEndTime = Utilities.formatDate(event.getEndTime(), "JST", "HH:mm");
report.push([Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd"), eventStartTime + "-" + eventEndTime, eventTitle]);
});
} else {
report.push([Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd"), "", "本日の予定はありません"]);
}

// スプレッドシートに追記
sheet.appendRow(report[0]);
}
PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう