15
6

エンジニアでなくてもスプレッドシートとGASでGoogle カレンダーのデータを取得

Last updated at Posted at 2023-12-11

はじめに

この記事はリンクアンドモチベーション Advent Calendar 2023の12日目の記事です。

Qiita初投稿となります、Daisukeです。
社内でDX推進を担っており、生産性向上のためにGAS(Google Apps Script)をメインに業務改善のツールを作成しております。

今回紹介する話

業務改善のツールのなかでも「部署のメンバーの時間の使い方を可視化したい」という要望をもらうことがあります。(例:部署内で顧客ごとに費やしている時間に偏りが無いか確認したい。) そのために現状の時間のデータを取得が必要となります。

この記事では、エンジニアでなくてもGASでカレンダー(カレンダー)のデータを取得できるツールを作成したお話をできればと思います。その過程で以下2つを解決しました。
① 取得の対象者をプログラム側から変更→スプレッドシートから取得の対象者を変更
② GASの実行時間制限の壁→時間制限前にトリガーを設定し制限を突破
作成したスプレッドシート「Google カレンダーのデータ取得」をコピーすればユーザー自身でカレンダーデータを取得できる状態としました。

① スプレッドシートとの連携

今回はスプレッドシートにGASを連携させます。スプレッドシートでは取得対象者のGoogleのメールアドレスを以下画像のように記載します。

スクリーンショット 2023-12-05 23.30.18.png

ここで、A,B,C列はそれぞれ以下となります。B列には記入が必要です。

ヘッダー名 情報 記入者
A データ取得日 データ取得された日付が書き込まれます GASにより記入(課題②、細かい仕様にて詳細説明)
B メールアドレス メールアドレスを記入ください(必須) ユーザーが記入
C 氏名 ご自由に記入ください(任意) ユーザーが記入

このようにGoogleアカウントさえあれば、ユーザーが自身で環境構築をせずとも取得対象者のカレンダー情報がシート"取得データ"に書き出されます。

② 実行時間制限の壁を突破

ご存知の方もいらっしゃると思いますが、GASには実行時間の制限(無償アカウント:6分、有償アカウント:30分) があります。
今回のようなGASによるカレンダーデータの取得には時間を要します。
そのためこちらのサイトを参考に、時間制限の壁を越えるためのコーディングを施しました。簡単に言うと、時間制限がくる前に次の実行トリガーを設定するというものです。

しかし今回のGASにそのまま適用してしまうと、どの対象者までデータを取得できたのか、プログラム側で判別がつきません。
そのため、以下コードの110行目にて実行中に取得が完了した対象者がいる場合シート"取得対象者"の対象者の行A列にGASの実行日が書き込むこと で解決しました。

ShiftIt-1.6.6 (1).png

まとめ

今回は作成したスプレッドシート「Google カレンダーのデータ取得」をコピーすればエンジニアでなくてもユーザー自身でカレンダーデータを取得するために行ったことを紹介しました。

以下、取得したデータのイメージを記載します。※時刻・カレンダータイトルは仮で入力しました。
image.png

またこの記事ではデータを取得した後の活用に関する機能については、スコープ外としました。取得したデータの活用方法に関しては、いずれQiitaで続編を投稿予定です!

(備考)ユーザーの使用手順

  1. スプレッドシート「Google カレンダーのデータ取得」にアクセスしファイルを複製
  2. シート名"取得対象者"のA列"データ取得日"のA2以降を空欄化、メールアドレスを指定)を1.で複製したスプレッドシートから設定
  3. "新しいカレンダーを作成する"の"新しいカレンダーを設定する"から取得対象者をユーザーのカレンダーに登録
  4. 1.で複製したスプレッドシートからメニューバーの"カスタムメニュー"→"カレンダーデータを取得"を選択し、GASを実行

参考資料

タイトル:GASおじさんのブログ/ GASでタイムアウトエラーを回避する方法【6分の壁/30分の壁】
URL:https://support.google.com/calendar/answer/37095?hl=ja

タイトル:Google カレンダーヘルプ/ 新しいカレンダーを作成する
URL:https://uncle-gas.com/avoid-timeout-error/

15
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
6