広告

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

2017年12月21日

スプレッドシートに記入したイベントをGoogleカレンダーに一括登録出来たら...

めちゃくちゃ便利ですよね(^^)

今回はスプレッドシートとGoogleカレンダーを連携してイベントを一括登録する方法について紹介していきます!

コピペでOK!スプレッドシートとカレンダーを連携してイベントを一括で登録してみよう

注意!

スプレッドシートからカレンダーへ正確な時刻で登録するには、GASを設定する前にプロジェクトのプロパティにて"タイムゾーン"を「(GMT+09:00)東京」に設定しておく必要があります

1. スクリプトエディタを開き「以前のエディタを使用」をクリック。

01

2. アンケートが表示されるので閉じる。

02

3. 新しいエディタへの案内が出るので閉じる。

03

4. 旧エディタ画面が開くので「プロジェクトのプロパティ」をクリック。

04

5. タイムゾーンの箇所を「(GMT+09:00)東京」に設定すればOKです。

05

OYAKUN
以上の設定を先に行っておくことで、日本時間のタイムゾーンでカレンダーに登録設定されるようになります。

初めに冒頭GIFで使っているスクリプトを紹介します。(※情報管理LOG様の記事を参考にさせていただきました。ありがとうございます。)

/* カレンダーへイベントを登録する */
function getsheet() {
/*-前準備-*/
   //シートの項目を以下変数定義
     var sht, i, eventday, eventname, place,start, end, added;
   //shtを定義
    sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
   //シートの2行目〜最終行まで処理を繰り返す
    for(i = 2; i <= sht.getLastRow(); i++) {
/*-前準備ここまで-*/
/*--スプレッドシートの値を取得して変数へ格納--*/
//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();
//i行4列目の値(開始時刻)をstartへ格納
 var starttime = sht.getRange(i,4).getValue();
 var H = starttime.getHours();//starttimeの時間を取得してHへ格納
 var M = starttime.getMinutes();//starttimeの時間を取得してMへ格納
 var S = starttime.getSeconds();//starttimeの時間を取得してSへ格納
//new Dateメソッドで開始日時「yyMMdd hh:mm」をstartへ格納
 var start = new Date(b+" "+H+":"+M+":"+S); 
//i行5列目の値(終了時刻)をendへ格納
 var endtime = sht.getRange(i,5).getValue();
 var H1 = endtime.getHours();//endtimeの時間を取得してH1へ格納
 var M1 = endtime.getMinutes();//endtimeの分を取得してM1へ格納
 var S1 = endtime.getSeconds();//endtimeの秒を取得してS1へ格納
//new Dateメソッドで終了日時「yyMMdd hh:mm」をendへ格納
 var end = new Date(b+" "+H1+":"+M1+":"+S1);
/*--カレンダーへ登録--*/
//i行6列目の値(イベント登録有無)をaddedへ格納
 added = sht.getRange(i,6).getValue();
//addedの値が空白だったらカレンダー登録を実行
 if(added == "") {
  Cal = CalendarApp.getCalendarById('◯◯◯@gmail.com');//ここを自分のgmailアドレスへ変更する
//指定のカレンダーIDへインベント登録
  Cal.createEvent(eventname,start,end,{location:place});//createEvent(タイトル、開始日時、終了日時、オプション)
//カレンダー登録が終わったイベントのaddedへ「登録完了」を記入
 sht.getRange(i,6).setValue("登録完了");
  }   //ifを閉じる
 }      //forを閉じる
}        //functionを閉じる

カレンダー登録GASをコピーする手順

上記をコピペして直ぐに使える状態にするには

  1. スプレッドシートを設定して
  2. スクリプトエディタにコードをコピペ
  3. GoogleカレンダーのID(gmail)へ

の順に設定します。

あひる
でもその説明だけじゃあちょっと分かりづらいよ〜
ううこ
ではコピペして使う手順を解説していこう

スプレッドシートへスクリプトをコピペして直ぐに使う手順

STEP1. シートを作成する

まずスプレッドシートを開きます。

シートに見出しを作成します。

面倒であれば下記をセルA1へコピペしてください。

イベント日 イベントの名前 場所 開始時間 終了時間 カレンダー登録状況

以下のように見出しが設定されればOKです!

見出しを作成したらシートの名前を「sheet1」へ変更します。

ツール > スクリプトエディタ」を選択。

開いた画面に冒頭で紹介したスクリプトをコピペして・・

上書き保存すればOKです(^^)

※スクリプトエディタはスプレッドシートと違い、上書き保存しないと保存されません。

STEP2. 実行ボタンを作成する

シートに戻ってボタンを作成します。「挿入 > 図形描画」を選択して、

図形 > ベベル(面取り)」を選択します。

ボタンの大きさは任意で決められるので、好きな大きさに決めて・・

文字を入力して・・

「保存して閉じる」を押せば・・

ボタンが作成されました(^^)

あひる
おお、ボタンが簡単に作れたw
ううこ
次いでにボタンを押したらスクリプトが実行されるように設定してしまおう。

STEP3. ボタンにスクリプトを割り当てる

ボタンをクリック > メニュー >スクリプトを割り当て」をクリック。

スクリプトの名前(function ○○←の○部分)を割り当てて、OKをクリック。

これでボタンをクリックすると、スクリプトが実行されるようになります。

あひる
やった〜もう出来た
ううこ
ボタンのカタチは図形描画で変更出来るから、自分の好きなカタチで作れるぞ

次ページではスクリプトの内容を解説していきます。

OYAKUN
今回作ってみて日付けと時間を別のセルにして、合体させるところが超苦戦しました(泣)

次のページへ >