Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2076

GASでスプレッドシートの入力からGoogleカレンダーに複数のイベントを追加

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでGoogleカレンダーに複数の予定をまとめて追加するスクリプトを作成する方法をお伝えしています。

前回の記事はこちら。

GASでデフォルトのGoogleカレンダーにイベントを追加する簡単なスクリプト
Google Apps ScriptでGoogleカレンダーに複数のイベントをまとめて追加するスクリプトを作っていきます。今回は、GASでデフォルトのカレンダーを取得してイベントを追加する方法です。

Googleカレンダーに一つのイベントを追加する簡単なスクリプトについて紹介しました。

今回は、GASでスプレッドシートに入力した内容をもとに、複数のイベントを追加できるようにしていきたいと思います。

では、行ってみましょう!

前回のおさらい

前回は、GASでデフォルトのカレンダーに単一のイベントを追加する方法をお伝えしました。

イベントを追加するメソッドはcreateEventメソッドです。

Calendarオブジェクト.createEvent(イベント名, 開始時間, 終了時間, オプション)

それで、作成したスクリプトがこちらですね。

function createEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var title = '研修1回目';
  var startTime = new Date('2018/7/16 09:00:00');
  var endTime = new Date('2018/7/16 12:00:00');
  var option = {
    description: 'イントロダクション',
    location: '〒105-0011 東京都港区芝公園4丁目2−8'
  }
  
  calendar.createEvent(title, startTime, endTime, option);
}

今回は、スプレッドシートに複数のイベント情報を入力しておいて、それをもとにイベントを追加できるようなスクリプトを作っていきたいと思います。

イベント情報を入力したスプレッドシート

まず、スプレッドシートを準備してみました。

こちらです。

カレンダーに追加するデータをスプレッドシートに入力

各列の構成は以下のようになっていますよ。

見出し データ型 説明
A列 イベントタイトル String イベント名
B列 開始時間 Date イベントの開始日時
C列 終了時間 Date イベントの終了日時
D列 場所 String 場所
E列 説明 String 説明

ほら、createEventメソッドで必要な引数に忠実に作ってみましたよ。

スプレッドシートから取得したデータの型を調べる

そういえば、createEventメソッドの開始時間、終了時間はDateオブジェクトで与える必要がありましたよね…

スプレッドシートで日付型で記述しているからって、それってgetValuesメソッドなどで取得したら、それはDateオブジェクトになるんですかね?

文字列型になっちゃったりしませんかね?

心配な方は、以下のようなスクリプトを実行してみましょう。

function checkType() {
  var calendar = CalendarApp.getDefaultCalendar();
  var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

  for(var i = 1; i < values.length; i++){
    Logger.log('value:%s, type:%s',values[i][1], typeof values[i][1]);    
  } 
}

3行目ですが、バインドしているスプレッドシートのアクティブシートの使用しているデータ範囲の値を二次元配列で取得しているステートメントになります。

そして、5行目からのfor文ですが、その二次元配列の見出し行の次から要素がある分だけ繰り返しをするというものです。

forループの処理ですが、2列目つまりB列の値とそのデータ型をログ出力しています。

typeof演算子で値のデータ型を確認する

typeof演算子は、値のデータ型を取得します。

typeof

前述のスクリプトを実行すると、以下のようなログ出力を得ました。

スプレッドシートの日時についてtypeof演算子でデータ型を確認

タイプは「object」となっていますね。おそらく、Dateオブジェクトとして取得されていると考えて良いでしょう。

スプレッドシートに入力した複数のイベントをカレンダーに追加するスクリプト

では、安心してスプレッドシートのイベントリストから、Googleカレンダーにイベントを追加するスクリプトを作ってみました。

function createEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

  for(var i = 1; i < values.length; i++){
    var title = values[i][0];
    var startTime = values[i][1];
    var endTime = values[i][2];
    var option = {
      description: values[i][3],
      location: values[i][4]
    }
    
    calendar.createEvent(title, startTime, endTime, option);    
  }
}

このスクリプトを実行すると、以下のようにイベントが追加されたことを確認できました。

スプレッドシートのデータから追加したGoogleカレンダーのイベント

まとめ

以上、GASでスプレッドシートの入力をもとにGoogleカレンダーに複数のイベントを追加するスクリプトを紹介しました。

次回以降、このツールをもう少し便利にしていきたいと思います。

どうぞお楽しみに!

連載目次:GASでカレンダーイベントをまとめて追加するツールを作る

Googleカレンダー便利ですよね!ただ、複数のイベントをいくつも追加しなければいけないとき…少し面倒です。そんなときのための便利ツールとして、スプレッドシートの入力情報をもとにカレンダーイベントをまとめて追加するツールを作成していきます。
  1. GASでデフォルトのGoogleカレンダーにイベントを追加する簡単なスクリプト
  2. GASでスプレッドシートの入力からGoogleカレンダーに複数のイベントを追加

Viewing all articles
Browse latest Browse all 2076

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>