見出し画像

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

今回は前回の記事に引き続き、グーグルカレンダーへの登録を行います。
今回のポイントは2点。
1.オプションの追加(場所・招待)
2.それを繰り返しで一括登録
元になるスプレッドシートはこういうイメージです。

「うわー、同じような内容の予定を15個作らないと」とかに対応できるようになります。

https://note.com/gas_keiri/n/n696621ec399a

まずはコードから(繰り返し前のオプション追加だけです。
【前回のコード】

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

}

【追加後のコード】場所・招待

function myFunction2() {
 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 basho = sheet.getRange(row,5).getValue();//場所・住所
  var shotai = sheet.getRange(row,6).getValue();//複数はカンマ区切り

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

オプションの追加

変数追加:2行

  var basho = sheet.getRange(row,5).getValue();//場所・住所   var shotai = sheet.getRange(row,6).getValue();//複数はカンマ区切り

{ } 内での location・guests の追加

defaultCalender.createEvent(title, startDate, endDate,{description:setumei,location:basho,guests:shotai });

オプション:location

ここに住所を書くと、googleマップの情報を表示してくれるやつです。
住所番地を書くのが正しいようです。ランドマークでも登録できますが、複数出てくると迷いますね。

オプション:guests

こちらはgoogleカレンダーに招待するメールアドレスを記載します。
1件のとき aaa@bbb.com
複数のとき カンマ区切り 【アドレス】,【アドレス】,【アドレス】

マスト事項は、開始日付・終了日付 の2点

この2点がどちらかでも空白であれば、エラーが出ますので注意ください。タイトルも必須事項ではありません。

繰り返しへの対応【今回完成コード】

function myFunction_rep() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
 for(row=2;row<=14;row++){

   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 basho = sheet.getRange(row,5).getValue();//場所・住所
  var shotai = sheet.getRange(row,6).getValue();//複数はカンマ区切り

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

先ほどの記法でrowを変数化してましたので「2行目から14行目にかけて12行繰り返す」という書き方に変えてます。
14行までとしてのは特に意味もなくシートの罫線を14行目まで引いたのでぐらいです。
今の例では、2行目から4行目までしか、データが入ってません(開始日付・終了日付)。ですのでコード実行は空白行でエラーを起こして終了するというプロからしたらあるまじき終わり方になっています。

まとめ

前回・今回の記事を書いてみて、スプレッドシートでカレンダー入力ができるイメージがなんとなくできてきました。
じゃあ使ってみるかとなるかどうかなのですがもう少し改良したい点が3点あります。
1.日付をもう少し入力しやすくできないか
2.招待リスト、カンマ区切りは書きにくい
3.繰り返しがエラーで終わるのが気持ち悪い
次で何とかしたいです。

今回のシートです。
https://docs.google.com/spreadsheets/d/1TtLDR8md4BcnqfbmKSYh4O-pjRXYiNYMiuc3qyBDzfk/edit#gid=0

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

#つくってみた

19,416件

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