DiscordとGoogleカレンダーをGASでスムーズに連携する方法

Discordの通知をGoogleカレンダーに自動で登録できれば便利ですよね。でも、どうやって始めたらいいんだろう?GASを使うといいって聞いたけど…。
猫男
猫男
catman
catman
君は運が良い。catmanが、GASを使ってDiscordGoogleカレンダーを連携する方法を教えてやろう。

GASでDiscordとGoogleカレンダーを連携

GASを使えばDiscordの情報をGoogleカレンダーに自動で反映させることができます。まず、APIキーを設定し、Webアプリとしてデプロイするところから始めます。

DiscordのWebhooksを作成

Discordでのイベントをトリガーにするため、まずWebhooksを設定します。ディスコードのチャンネル設定から、簡単に行えます。

1. Discordサーバーを開き、対象のチャンネルを選んでください。

2. 「チャンネル編集」から「統合」メニューに入り、「Webhook」を選択します。

3. 「新しいWebhook」をクリックし、WebhookのURLをコピーします。

GASの基本設定とスクリプトの作成

次に、GASを使ってWebhooksからのデータを受け取り、Googleカレンダーに追加します。

 function doPost(e) {
 const data = JSON.parse(e.postData.contents);
 const calendar = CalendarApp.getDefaultCalendar();
 calendar.createEvent(
  data.title,
  new Date(data.startTime),
  new Date(data.endTime),
  {description: data.description}
 );
} 

このスクリプトは、受け取ったデータをJSON形式で解析し、既定のGoogleカレンダーに予定を追加します。

 

GASってこんな風に使うんですね!JSONでデータを渡すんだ。
猫男
猫男
catman
catman
その通り。次に、このスクリプトをWebアプリとしてデプロイする方法を学ぶぞ。

GASをWebアプリとしてデプロイ

Google Apps ScriptをWeb Appとしてデプロイすることで、外部からHTTPリクエストを受け取れます。

デプロイ手順

1. GASエディタの「プロジェクトをクラウドに保存してデプロイ」ボタンをクリックします。

2. 「新しいデプロイ」を選択し、タイプを「ウェブアプリ」として設定してください。

3. 必要な権限を設定し、ウェブアプリとしてデプロイします。

これで、指定したURLへPOSTリクエストを送るとGASが反応するようになります。

 

よし、これでDiscordとGoogleカレンダーを連携できそう…!
猫男
猫男
catman
catman
この調子で、さまざまな機能を追加してみると良い。応用の幅は広いぞ。

練習問題

次の問題に取り組みましょう。DiscordからGASに送られるJSONデータが次のような形だったと仮定します。

どのようにスクリプトを修正すべきか考えてみてください。

JSONデータ:

 {
 "title": "Meeting",
 "startTime": "2023-11-01T15:00:00Z",
 "endTime": "2023-11-01T16:00:00Z",
 "description": "Project meeting for Q4."
} 

練習問題の解答・解説

 function doPost(e) {
 const data = JSON.parse(e.postData.contents);
 const title = data.title ?? "No Title";
 const startTime = new Date(data.startTime);
 const endTime = new Date(data.endTime);
 const description = data.description ?? "";
 const calendar = CalendarApp.getDefaultCalendar();

 calendar.createEvent(
  title,
  startTime,
  endTime,
  {description: description}
 );
} 

このスクリプトでは、POSTリクエストから受け取るデータをJSONとして解析し、それに基づいてカレンダーのイベントを作成します。

?? は、データが存在しない場合にデフォルト値を設定するために使用するオプショナルチェーンです。

CalendarApp.getDefaultCalendar() を使って、既定のカレンダーにアクセスし createEvent メソッドでイベントを追加します。

この解説をもとに、自分でもスクリプトを書いてみますね!良い結果が出るといいな…。
猫男
猫男
catman
catman
その意気だ。プログラミングは試行錯誤の積み重ねが重要だ。常に学び続けよう。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。