【GAS】Googleカレンダーの予定をリマインドするプログラムを作る

Python・GAS
ワタシ

ども、らーにゃです。今回はGASの活用についてまとめます。

身の回りのことをもっと自動化できないものか?

仕事でもプライベートでも忙しくなるほどに自動化の必要性・重要性は増していると思います。

「プログラミングど素人の自分がどうやりゃええんや…」

と頭を抱えることが多くありました。

そんな中、最近GAS(Google Apps Script)を勉強している中で

『ど素人の自分でもコピペするだけである程度出来た!』

と思えるものが出来たので、今までやってきたことを余すことなく記載します。

自動化やGASのプログラミングに興味があるけど、どんなことなら出来るのか…と思っている初心者の方のご参考なれば幸いです。(‘ω’)ノ

今回の論点整理

今回取り扱うのはGoogle カレンダーについてです。

具体的にはGASを使って、指定のカレンダーを参照してそこのイベントを拾ってきます。

例えば以下のように、スプレッドシートに記載し、それをまたメールでリマインドします。

具体的には下記の3点について触れていきます。

今回の論点
  • プログラムの全容
  • カレンダーの参照の仕方
  • 自作プログラムへの拡張

順に触れていきます。

Google Apps Scriptの活用ポイント

プログラムの全容

まず結論から言いますと、下記のようなコードで実行が出来ます。

基本的には下記のプログラムをコピペして頂ければ使えるはずです。

プログラムのコード

function sendCalendar(){

//☆★Googleカレンダーのイベント情報を抽出してスプレッドシートに記載する

  const sp = SpreadsheetApp.getActiveSpreadsheet();
  const sh1 = sp.getSheetByName('シート1');

  const id = '★参照したいカレンダーのID'
  const calendar = CalendarApp.getCalendarById(id); 


  const startDate = new Date();
  const endDate = new Date(Date.parse(startDate) + (7 * 60 * 60 * 24 * 1000)); //ここで期間を調整

  const event = calendar.getEvents(startDate, endDate);

  for(var i=1;i<event.length+1; i++){
    sh1.getRange('a'+i).setValue(event[i-1].getTitle());
    sh1.getRange('b'+i).setValue(event[i-1].getStartTime());  
    sh1.getRange('c'+i).setValue(event[i-1].getEndTime());
    sh1.getRange('d'+i).setValue("=round((rc[-1]-rc[-2])*24)");  
  }


//☆★スプレッドシートの情報を参照して記載内容をGmailで送信


 const sheet = SpreadsheetApp.getActiveSheet();
 const lastRow = sheet.getLastRow();;
 
 const recipent = '★送信したい宛先のアドレス';
 const subject = '7日間のイベント';
 let body = '↓今週のイベント↓\n\n';

 for(let i = 1; i <= lastRow; i++){
   var namae = sheet.getRange(i, 1).getValue(); 
   var hiduke = sheet.getRange(i, 2).getValue();
   var hiduke = Utilities.formatDate(hiduke, "Asia/Tokyo", "yyyy/MM/dd"); //フォーマットを整えます
   body += hiduke + '\n';
   body += namae + '\n' + '\n';
 }

  const options = {
    name: 'GASからの送信'
  };
  GmailApp.sendEmail(recipent, subject, body, options);
}

大きくは2つの機能を内包しています。

1点目がGoogleカレンダーからGoogleスプレッドシートに入力すること、2点目がスプレッドシートの情報をGmailに入力して共有することです。

前者は該当のカレンダーを参照して、イベントを抽出するプログラムにしておりますが、対象となる期間はendDate部分の数字をいじれば調整可能です。

また、後者は途中にformatDateを入れていますが、これがないと非常に読みにくい長ったらしいものになるので、これで調整します。

ちなみに送信先のアドレスは ,(カンマ)で区切れば、複数へ送信することは可能です。

本文の内容は、スプレッドシートに記載されたイベント名とスタート日時を順番に文面に記載しているのみです。

尚、上記をコピペしていただいた上で変更する点は下記の2点のみです。

修正する箇所

「★参照したいカレンダーのURL」の部分を変更

「★送信したい宛先のアドレス」の部分を変更

上記のカレンダーのURLの参照については後述します。

基本的にはコピペして貼り付ければそれでOKです。定例実行の設定をすることでリマインドの仕組ができます。

ワタシ

予備知識なくともコピペでいいので簡単にできちゃいます。

Google カレンダーの設定

上記のカレンダーのURLの参照の仕方について記載します。

まずはGoogleカレンダーを開いて右上の「設定」を押します。

その後は下記の3ステップで参照ができます。

  1. マイカレンダーの設定から該当のイベントを選択する
  2. 設定項目の中から「データの統合」を選択・クリックする
  3. 右側に記載されているカレンダーIDを参照する

この該当のIDが分かれば、上で述べたプログラムにコピペすればそれで完了です。

ツマ

Googleカレンダーで意外と色々設定できるんだね

まとめ

今回ポイントしてまとめてきたのは以下の2点です。

抑えたいポイント
  • プログラムの全容
    ▷該当イベントを①スプレッドシートへ記載、②Gmailで送信の2つの工程でリマインドする仕組
  • GoogleカレンダーIDの参照
    ▷設定画面から該当イベントに移り、データの統合部分からIDを参照する

今回は一例を出しましたが、GASを扱うことが出来ると、効率化・自動化をさせることは無限大です。

そしてこのGASの何と言っても素晴らしいのが環境不要!そしてしかもタダ!ということです。

仕事でつかえる部分があるのは勿論のこと、プライベートでも利活用できるオトク技がいっぱいなため、非エンジニアの人でもぜひトライしてみてください!

とにかく私のような初心者の人が手軽に試して面白い!と感じて飽きる前に習慣化できるように、今まで作ったコードは公開していくのでコピペして利用・参考にして下さい。

自身の今のスキルや状況に応じて、次のステップアップに向けた動きを付けて一緒に自動化・効率化の技術を上げていきましょう!(‘ω’)ノ

>>Udemy:GASのおすすめ講座

ご精読頂きありがとうございました!
m(_ _)m