広告

【コピペでOK!】スプレッドシートとカレンダーを連携してイベントを一括登録する方法

2017年12月21日

スプレッドシート・カレンダーを連携してイベントを一括登録する3ステップ

スプレッドシートからGoogle apps スクリプトを使ってカレンダーへ登録するには、以下3ステップにて実現します。

  1. スプレッドシートへ見出しを設定する
  2. スプレッドシートの値をGoogle apps scriptで読込み
  3. 読込んだ値をGoogleカレンダーへ登録

あひる
あひる
うん、むずかしそう・・
ううこ
ううこ
順に解決していけばそんなに難しくはない。

STEP1. スプレッドシートに見出しとイベント内容を記入

スプレッドシートに見出しを作成し、そこに沿ってイベントを記入していきます。

STEP1−1. スプレッドシートに見出しを作成

新規のスプレッドシートに見出しを作成し、行を固定します。(見出しの並びは同じにしてください)

1行目から見出しを作成すると上手くいきます*

STEP1−2. イベント内容を記入

次にイベント内容を記入します。

あひる
あひる
イベント日の日付の書き方は決まってないの?
ううこ
ううこ
「yyyy-mm-dd」や「yymmdd」でも問題ない。入力しやすい方を使えばOKだ

追記

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");

あひる
あひる
Utilities.formatDateはたしか”JST”で日本時間を指定してあげるんだっけ
ううこ
ううこ
"GMT”だとイギリス標準の時間を取得してしまうからね。

※ 日付け取得の詳細については以下記事から参照いただけます↓

参考|Google apps scriptで日付を表示してみよう!

イベント名・イベント場所も変数宣言して格納します。

//i行2列目の値(イベントの名前)をeventnameへ格納
eventname = sht.getRange(i,2).getValue();
//i行3列目の値(イベントの場所)をplaceへ格納
place = sht.getRange(i,3).getValue();

あひる
あひる
よし!前準備完了!
ううこ
ううこ
次は超大事な時間の取得の部分だ

次のページへ >