スプレッドシート・カレンダーを連携してイベントを一括登録する3ステップ
スプレッドシートからGoogle apps スクリプトを使ってカレンダーへ登録するには、以下3ステップにて実現します。
- スプレッドシートへ見出しを設定する
- スプレッドシートの値をGoogle apps scriptで読込み
- 読込んだ値をGoogleカレンダーへ登録
STEP1. スプレッドシートに見出しとイベント内容を記入
スプレッドシートに見出しを作成し、そこに沿ってイベントを記入していきます。
STEP1−1. スプレッドシートに見出しを作成
新規のスプレッドシートに見出しを作成し、行を固定します。(見出しの並びは同じにしてください)
STEP1−2. イベント内容を記入
次にイベント内容を記入します。
追記
yymmddでは上手く取得出来ないときがありました。
yyyy-mm-ddで記入すると問題なく動きます。この時、書式設定で「日付」に設定してあげるとカレンダー表示から日付を選択することが可能です。
書式設定の詳細については下記記事を参照してください↓
STEP2. スプレッドシートの値をGoogle apps scriptで読込む(前準備)
スプレッドシートへ見出しとイベント内容を記入したら、シートを読み込むスクリプトを書いていきます。
/*-前準備-*/
//シートの項目を以下変数定義
var sht, i, eventday, eventname, place,start, end, added;
//shtを定義
sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
//シートの2行目〜最終行まで処理を繰り返す
for(i = 2; i <= sht.getLastRow(); i++) {
/*-前準備ここまで-*/
STEP2-1. 変数を先に宣言する
処理で扱う変数varを先にまとめて宣言しておきます。
//シートの項目を以下変数定義
var sht, i, eventday, eventname, place,start, end, added;
変数名は分かりやすいものが使いやすいです個人的に・・
因みに変数の宣言varは以下のように行えます。
①var 変数名;
②var 変数名1, 変数名2, ...;
③var 変数名1 = 値1, 変数名2 = 値2, ...;参照元:変数の宣言(var文)
今回は②の方法で宣言しました。
STEP2-2. スプレッドシートを読み込む
スプレッドシートをアプリとして呼び出します。連携。
//shtを定義
var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
SpreadsheetAppメソッドを使ってスプレッドシートアプリを開き、
getActiveSpreadsheet
でシートを取得します。
また指定したシートを呼び込むにはgetSheetByNameの()の中にシートの名前を記入します。
getSheetByName(name)
指定された名前のシートを返します。(name)へシート名を記入
名 タイプ 説明 name String 取得するシートの名前 参照元:getSheetByName
今回は「sheet1」というシート名に設定しました。
STEP2-3. イベント入力のある最終行まで繰り返し処理
繰り返し実行する処理を書いていきます。
//シートの2行目〜最終行まで処理を繰り返す
for(i = 2; i <= sht.getLastRow(); i++) {
for文でスプレッドシートの一番最後のイベント行までカレンダー登録する、繰り返し処理を行います。
javascriptの" for文 "では中カッコ「{}」の中に繰り返し処理を書いていきます。
for (初期値; 条件式; 増減式) {
繰り返し処理
}・初期値 – はじめに処理をおこなう値
・条件式 – 繰り返し処理をおこなうかどうかの判断をする
・増減式 – 処理ごとに、値をいくつ増やしたり減らしたりなど何かしらの更新をおこなう参照元:for文を使ってループ処理
STEP3. スプレッドシートの値をGoogle apps scriptで読み込む(日付取得)
スプレッドシートの値を読み込んで、日付けをフォーマットしていく操作です。
STEP3-1. イベント日/イベント名/イベント場所を変数へ格納
/*--スプレッドシートの値を取得して変数へ格納--*/
//i行1列目の値(イベント日)をeventdayへ格納
eventday = sht.getRange(i, 1).getValue();
//開始日をUtilities.formatDateでフォーマットしてbへ格納
var b = Utilities.formatDate(eventday,"JST","yyyy/MM/dd");
//i行2列目の値(イベントの名前)をeventnameへ格納
eventname = sht.getRange(i,2).getValue();
//i行3列目の値(イベントの場所)をplaceへ格納
place = sht.getRange(i,3).getValue();
Logger.log(place);
getRange.getValue()
でスプレッドシートのセルの値を取得します。
//i行1列目の値(イベント日)をeventdayへ格納
eventday = sht.getRange(i, 1).getValue();
- getRange(i,1)=i行目の1列目のセルを取得
- getvalue()=getRangeの値を取得
セルの値を取得する詳細は下記記事をご参照ください↓
Google apps scriptを無料で機能拡張出来る29個のAPIまとめ
日付けは
Utilities.formatDate
を使って「eventday」をyyyyMMddへ初期化します。
//開始日をUtilities.formatDateでフォーマットしてbへ格納
var b = Utilities.formatDate(eventday,"JST","yyyy/MM/dd");
※ 日付け取得の詳細については以下記事から参照いただけます↓
参考|Google apps scriptで日付を表示してみよう!
イベント名・イベント場所も変数宣言して格納します。
//i行2列目の値(イベントの名前)をeventnameへ格納
eventname = sht.getRange(i,2).getValue();
//i行3列目の値(イベントの場所)をplaceへ格納
place = sht.getRange(i,3).getValue();