見出し画像

GASを使ってスプレッドシートをもとにカレンダーに登録する【GAS】【Googleスプレッドシート】【Googleカレンダー】

複雑な構成を排除して、シンプルに初心者でも理解しやすいGASシリーズです。
・スプレッドシートでgetRange,getValue,setValueを扱える
・繰り返し、条件を少しずつ学びながらGASの可能性を体感していく。
このようなコンセプトで記事を書いております。
過去の記事では、事務業務を想定したスプレッドシート上での機能・Gmailと連携してのメール配信をご案内してきました。

他の記事を読んでなくても、これだけなんとなく目を通してもらえたら、これからの理解はできると思います。

今回は、Googleカレンダーの一番シンプルな形

カレンダーに登録するのに必要な情報、
開始日付・終了日付 です。
それだけではなんか味気ないので、タイトルと説明も加えた4項目を、スプレッドシートからGASでカレンダーに登録してみようと思います。

スプレッドシートの構成
1行目がヘッダー、2行目がカレンダーで作成したい項目です。

スクリプト

function myFunction() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  var row =2
   var startDate = sheet.getRange(row,1).getValue();//開始  
   var endDate = sheet.getRange(row,2).getValue();//終了
   var title = sheet.getRange(row,3).getValue();//タイトル
   var setumei = sheet.getRange(row,4).getValue();//説明

  var defaultCalender = CalendarApp.getDefaultCalendar();//デフォルトカレンダー
  defaultCalender.createEvent(title, startDate, endDate,{description:setumei});
}

これを実行すると、あなたのカレンダーにイベントが登録されてる!
というスクリプトです。

構成を説明していきます。
1.スプレッドシート(開いているシート)を取得する
2.セルから開始日付・終了日付・タイトル・説明の情報を取得する
3.登録するカレンダーを取得する(デフォルトカレンダー)
4.カレンダーにイベントを追加する
という構成です。

1.スプレッドシート(開いているシート)を取得する

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
開いているシートを取得すると命令文です。これはまずはこんなものだとご理解ください。

2.セルから開始日付・終了日付・タイトル・説明の情報を取得する

スプレッドシートから値を取り出します。セル「A2」:開始日付、「B2」:終了日付、「C2」:タイトル、「D2」:説明です。
var row =2
すごく深い意味があるわけではないですが、今後行を繰り返していくことをなんとなく想定して、変数化してみました。
なので、後のスプリプトが「row」を含んだ構成になっています。
それ以外は基本のgetRange().getValue()です。
var startDate = sheet.getRange(row,1).getValue();//開始
var endDate = sheet.getRange(row,2).getValue();//終了
var title = sheet.getRange(row,3).getValue();//タイトル
var setumei = sheet.getRange(row,4).getValue();//説明

「日付・時間データの取り扱い」

ここだけ少しふれておきます。
スプレッドシートを扱うところで、いろいろ壁になるのが「日付」のデータです。他のプログラムや関数でも思ったとおりにならないこともありますので、ぼちぼち慣れていく必要があります。
今回は開始日付として、「10/21 10:00」を表記で機能しています。
データ型を開設したサイトがありますので深く理解されたいときはこちらなどご参考に。
https://blog.synnex.co.jp/google/gas-data-format/

3.登録するカレンダーを取得する(デフォルトカレンダー)

var defaultCalender = CalendarApp.getDefaultCalendar();
登録するカレンダーの指定です。「デフォルトカレンダー」を指定しています。

4.カレンダーにイベントを追加する

  defaultCalender.createEvent(title, startDate, endDate,{description:setumei});
先ほど指定したカレンダーに対し「イベントを作成する」という命令文です。タイトル・開始日付・終了日付は本文内引数。説明はオプション内記載なので { } での記載になるということです。

まとめ

まずはシンプルに、スプレッドシートの情報をもとにグーグルカレンダーの作成ができることを体験くださいませ。


この記事が参加している募集

どんな記事ならサポートしてみようと思えるか、ご要望ありましたら教えてくださいね。