かずきち。の日記

サーバサイドエンジニアのつぶやき

GoogleカレンダーのカレンダーIDを自動抽出して無駄な会議抽出スプレッドシートをさくっと実装した

背景

f:id:kazukichi_0914:20211213180741g:plain

日本は無駄な会議が多い。
なので社内で行われた会議数をカウントしたい。
それはどこの会社もしかり…

しかもコロナ禍以前の会議でしたら、社内で行われるので「会議室」という実体の部屋の物理的リソースを消費しましたが…
リモート会議が主流になった今、社内の会議なんてパソコン1台あれば、どこでも簡単に行えてしまいます。
なので、さくさくっとスクリプトを書いて、会議IDをぶっこ抜いてしまいましょう。

用意するのはGoogleAppsScriptです

まー言わずもがなですよね。
Googleとの連携がめっちゃいいスクリプトです。

f:id:kazukichi_0914:20211213193736g:plain

まずは左サイドバーからCalendarとSheetsのライブラリをオンにします。

ここまでで、スクリプトベースでカレンダーとスプレッドシートをいじることができます。

あとはコードです。

何行になるかよくわからないけれど、さくさくさくーと書いてみました。

//予定のゲストを取得するコード(オーナーを除く)
function calender() {
  var calendar = CalendarApp.getDefaultCalendar();
  var date = new Date();
  Logger.log(date);
  Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy/MM/dd'));  
 
  var events = calendar.getEventsForDay(date);
  for (var i in events) {
    var event = events[i];
   
    var id = event.getId();
    console.log(id);
    console.log(event.getTitle());
    
    var guests = event.getGuestList();
    for (var j in guests) {
      var guestaddress = guestaddress+'¥t'+guests[j].getEmail();
    }
    Logger.log(guestaddress);

    var spreadsheet = SpreadsheetApp.openById('スプレッドシートID');
    var sheet = spreadsheet.getSheetByName('抽出会議');
    sheet.appendRow([id,event.getTitle(),guestaddress]);
     
  }
}

//カレンダー参加人数収集をトリガー化
function setTrigger(){

  const time = new Date();
  time.setHours(23);
  time.setMinutes(59);
  ScriptApp.newTrigger('calender').timeBased().at(time).create();

}
これで会議に参加している人数自在に抜きます。

f:id:kazukichi_0914:20211213194333g:plain

スクリプトを実行させると会議IDと参加者のGoogleアカウントをぶっこ抜きます。
これを全社展開させると社内で行われている会議を一網打尽で抜けて、会議の効率化・無駄な会議の抽出が行なえます。
たかだか37行ですが、自動でスケジュール抽出してリスト化します。

あとはトリガー設置です

トリガーとはGASの唯一いいところかもしれません。
何かって言うとLinuxコマンドで言う「crontab -e」です。
サーバー上で自動実行してくれるんです。
Google太っ腹ですね。

f:id:kazukichi_0914:20211213194915g:plain

こんな具合に毎日自動実行してくれます。
あとは会議の頻出回数をCONTIFで抜いておきます。

会議名 回数
庵野秀明展 8
radiko 8
test 8
楽天検索 8
はてなブログiOS読者になる 7

これはGoogleカレンダーに登場するイベント回数になります。
これで無駄な会議や多すぎる会議が抽出できたわけです。
めでたしめでたし。