GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む★★☆ – ビジボット

GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む
GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む
ビジネス

便利なGASレシピ集!に戻る場合は以下から

便利なGASレシピ集! – [2019年最新版]

2019年5月22日

はじめに

今回のビジボットでは、タイトル通り『GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む』方法を紹介していきます。よく、カレンダーの中にある情報をExcelにDLできるサイトを見かけますが、GASで記述するので、例えばタイトルを統一した文言で『【導入】』ってしていた場合、それだけをスプレッドシートに取り込んだりかなり自由に出力することが可能です。
※今回はフィルター条件を入れたりはしていません

\Chatwork版/GASでGoogleフォームの結果を通知したい!-2019年版

[Chatwork版]GASでGoogleフォームの結果を通知したい!-2019年版

2019年4月16日
GASで今日のGoogleカレンダーをSlackに通知する! - 2019年版

GASで今日のGoogleカレンダーをSlackに通知する! – 2019年版

2019年4月10日
GASを使って複数メンバーのGoogleカレンダーをスプレッドシートに取り込む

GASを使って複数メンバーのGoogleカレンダーをスプレッドシートに取り込む★★☆ – ビジボット

2019年2月21日

それでは早速始めていきます!

1.GASコード

POINT

まずは完成コードを記載していきます。概要を簡単に説明すると、どのGoogleカレンダーから情報を取得するかGoogleカレンダーIDを取得し、そのIDに対して指定した期間の情報を出力してスプレッドシートに反映する。というシンプルな作りです。
詳細については後ほど説明していきます!

GASコード

詳細説明は後ほどしていきます。
以下はLogger.log()で出力されたログ結果です。

GASログ

2.コード説明

POINT

まず、取得したいカレンダーIDを取得します。「******************」に入る部分を以下方法で取得します。
//カレンダーIDを指定して、カレンダーを取得
var calendar = CalendarApp.getCalendarById(”);

カレンダーの左側に表示されるメニューをクリックし、『設定と共有』をクリックします。

カレンダーID確認方法 - ビジボット
カレンダーID確認方法 – ビジボット

画面を下までスクロールすると『カレンダーの統合』という項目があります。
この中にある『カレンダーID』が「******************」に入る部分です。

カレンダーID - ビジボット
カレンダーID – ビジボット

日付を取得 – from

次に、取得したいデータ範囲を指定します。
変数 date に取得したい日付を指定して、それらを変数 from と変数 end に入れます。
※Logger.log()では素のままだと見にくいのでタイムゾーンと表示形式を整形してます

GASコード

ログ結果はこの時点ではfromとendの時間は共通になってます。

GASログ

日付を取得 – end

次に、取得した時間に対して終わりの時間を指定します。
fromとendの時間は共通なので、endの時間にsetMonthを使って、getMonth() + 1します。
すると、endの時間だけ1ヶ月分ずれた状態でセットされるのでそれをカレンダーの取得条件として引数に渡します。

GASコード

ログ結果はこの時点でfromとendで1ヶ月の差が出来ます。
※この場合2018-12-01 00:00:00 より小さい データを指しています

GASログ

スプレッドシートに反映

最後にスプレッドシートに取得した情報をセットする部分を見ていきます。
まず、操作しているスプレッドシートのヘッダ行に入る値をプログラム側でセットしておきます。
※直接スプレッドシートに記載して、コードは無しでもいいですが誤って消した時に便利です

次に、カレンダーから取得した値を取得した要素分for文で回し、取得した結果をスプレッドシートに反映します。

※var duration = (endTime – startTime) /(1000*60)/(60);は1時間を1として見た時の所要時間が表示されてます

GASコード

実行後に完了すると、指定した列タイトルが1行目に入ってて、その下にカレンダーから取得した情報が反映されてます!
所要時間は1時間あたりを1として見た時に30分の作業であれば0.5といったように表示されてます!
※今回詳細は取得しないようにコメントアウトしてますが、出力したい場合はコメントアウトを外してください

カレンダー取得結果 - ビジボット
カレンダー取得結果 – ビジボット

以上で完了です!
一人だけを取得するってコードだったので、複数メンバーがいた時に別シートにカレンダーIDをセットしておいて、それを順番にループして一括で取得できるコードを明日は書いていこうと思います!出来たら..(笑)

最後までお付き合い頂き、ありがとうございました!