Googleカレンダーからアプリ向けにスケジュールを抽出する流れ。

  • URLをコピーしました!

GASを利用してGoogleカレンダーの予定をリンク経由でデータ連携させることができます。
その流れをまとめてみました。

目次

Googleカレンダーには記録がある

Googleカレンダー。
日頃から予定を入れている方も多いかと。

スマホのカレンダーアプリでもGoogleカレンダーを連携できるようになっているものがほとんど。
家族とも予定を共有できますし、ネット上に予定を非表示にしてスケジュールを公開することもできて便利です。

このGoogleカレンダーのデータをエクスポートしたいと考えることもあるかと。
振り返れば、Googleカレンダーは10年前にも使っていたわけで、その10年で何をやっていたか?カレンダーを遡ればわかります。

ただ、これを1つずつアプリでチェックするのはタイヘンです。
そこでデータをエクスポートするという選択肢が出てきます。

Googleスプレッドシートに書き出す方法もあるのですが、今回取り上げたいのは、スプレッドシートを使わずにGAS(GoogleAppScript)からのリンクをもとにデータを連携する流れです。

GASでGmailの件名を抜き出してExcelに自動連携する流れ。 | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG

GASのもう1つのやり方

GoogleカレンダーのデータをGASで取り出す方法は、2つあります。

ひとつは、Googleスプレッドシートに書き出す方法。
スプレッドシートの

GASをうごかすことで、シートにデータを書き出していきます。
わたしも経理やメルマガのタイトルの書き出すのに使っています。


外のアプリから使うには、シートを読みにいく必要があり、しくみをつくる手間もかかります。

もうひとつが、今回。
GASを「ウェブアプリ」としてデプロイする方法。

デプロイとは、書いたコードに住所(URL)をつけて、外からでも利用できるようにすることです。
URLをクリックすることで、別のシートやアプリにデータを渡すことができるのです。

GASの使い道、ざっくり分けると、こうかなと。

  • スプレッドシート → データを「書き出す」
  • デプロイ → データを「渡す」。アプリ連携向き

なので、スプレッドシートは経由しません。
今回の事例でいえば、URLをクリックしたら、Googleカレンダーの予定データがアプリに反映されるイメージです。

デプロイにするまでの流れ

デプロイにする流れは以下です。
まずは、Google Apps Scriptを開きます。

新しいプロジェクトを作成し、

コードを書く場所に、以下のGASコードを貼り付けます。コードはAIに書いてもらえます。

コードはこちらにも置いておきます。

Googleカレンダーのデータ抽出コード

// 共有用トークン。リクエストの ?token= とアプリで照合して簡易認証する
const TOKEN = "ここを長めのキーワードに変更";

// Webアプリへのreリクエスト(URLアクセス)で実行される関数
function doGet(e) {
  // トークンが一致しなければ認証エラーを返して終了
  if (e.parameter.token !== TOKEN) {
    return json_({ error: "unauthorized" });
  }

  // 開始日。?start= があればその日付、なければ「今」
  const start = e.parameter.start
    ? new Date(e.parameter.start)
    : new Date();

  // 終了日。?end= があればその日付、なければ開始日から30日後
  const end = e.parameter.end
    ? new Date(e.parameter.end)
    : new Date(start.getTime() + 30 * 24 * 60 * 60 * 1000);

  // Googleカレンダーから期間内の予定を抽出し、必要な項目だけに整形
  const events = CalendarApp.getDefaultCalendar()
    .getEvents(start, end)
    .map(event => ({
      title: event.getTitle(),                    // 件名
      start: event.getStartTime().toISOString(),  // 開始日時(ISO形式)
      end: event.getEndTime().toISOString(),      // 終了日時(ISO形式)
      location: event.getLocation(),              // 場所
      description: event.getDescription()         // 詳細メモ
    }));

  // 予定一覧をJSONで返す
  return json_({ events });
}

// オブジェクトをJSONレスポンスに変換する共通ヘルパー
function json_(obj) {
  return ContentService
    .createTextOutput(JSON.stringify(obj))
    .setMimeType(ContentService.MimeType.JSON);
}

ポイントは、いちばん上のTOKEN を自分だけが分かる長めの文字に変更することです。

その後、右上の「デプロイ」から「新しいデプロイ」をクリックし、

種類は「ウェブアプリ」を選択して、次のように設定はしましょう。

  • 実行するユーザー:自分
  • アクセスできるユーザー:全員、またはリンクを知っている全員

初回はGoogleカレンダーへのアクセス許可が出るので、許可し、デプロイが完了すると、ウェブアプリURLが発行されます。ウェブアプリのほうのURLをコピーしましょう。

許可の方法について知りたい方は、こちらから。
GAS(Google App Script)でGmailの必要部分だけを抽出する方法。 | GO for IT 〜 税理士 植村 豪 OFFICIAL BLOG

このURLをデータ連携したい場所、もしAIでアプリをつくっている場合には、HTMLアプリの「データ取込」→「カレンダー」→「GAS連携URL」に貼り付けます。

URLとキーワードを1つにまとめるなら、execのあとにキーワードを組み合わせて貼り付けます。

https://script.google.com/macros/s/xxxx/exec?token=キーワード

これでGASを利用してアプリにGoogleカレンダーのデータを連携できます。

ということで、Googleカレンダーのデータは、過去の行動もわかる大事な記録。ネタにもなりますし、大事に使っていきましょう。

ということで。アプリにデータ連携したいときには、参考にしていただければ。


【編集後記】
昨日は法人のお客さまと打合せ。
その後はカフェでブログ、アプリづくり。

【昨日の1日1新】
※「1日1新」→詳細はコチラ
Notion CSVデータをダウンロード
キリン iMUSE フルーツリフレッシュ アップルミックス


この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次