1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASを使ってGoogleカレンダーの予定を取得してみようの巻

Last updated at Posted at 2024-07-24

GASを使って遊んでみようの会Part1です。

今回のゴール

今回のゴールは、GASを使ってGoogleカレンダーの予定を取得し、以下のような形式で出力させます。

|MTG|開始~終了|所要時間(分)|
|--|--|--|
うおおおおおおおおお|11:00 - 11:30|30|
おひる|12:00 - 13:00|60|
piyopiyo|15:00 - 16:00|60|

それではGAS(Gogle App Script)でGoogleカレンダーに登録している予定を取得してみようの巻の始まり始まり〜〜〜〜〜!!!!!

GASってなんぞや

Google Apps Script(GAS)は,Googleが提供しているサービスのことです
(そんなの知っとるがなってツッコミはやめてください......)
Webブラウザ上で動作する「JavaScript」をベースに開発された言語なので、JavaScriptを日々学んでいる方は比較的容易に習得できるようになっているかと思います。

何ができるの?

  • Googleドライブ上のファイルが更新されたことをGmailで通知する
  • Googleスプレッドシートの内容を元にGmailからメールを送信する
  • Googleカレンダーの予定を自動で登録・編集する
  • Googleフォームを自動で作成する
  • Googleフォーム上で指定したアドレスにフォームの入力内容を自動送信する
  • スクレイピング(※3)により収集した情報をGoogleスプレッドシートに登録

引用しました:relieved:

使ってみよう!

そんなGASを使ってみましょう!!!!!!

:point_down_tone2:以下ページにアクセスしてみましょう
https://www.google.com/script/start/

スクリーンショット 2024-07-24 18.59.46.png

このようなページが表示されたのではないでしょうか?

Start Scriptingをクリックをします。
もし、Googleアカウントにログインしていない方は、ログインしてくださいと出るので、ログインしちゃいましょう:v_tone2:

ログインできたら、新しいプロジェクトを開きます。

スクリーンショット 2024-07-24 19.02.03.png

既存のコードは一旦削除して、以下のコードに書き換えてください。

function createCalendarList() {
//日付と時間を取得
  const today = new Date();
  today.setHours(00);
  today.setMinutes(00);
  today.setSeconds(00);
  const tomorrow = new Date(Date.parse(today) + (24 * 60 * 60 * 1000));

// Googleカレンダーの情報を取得
  let events = CalendarApp.getEvents(today, tomorrow);
  let messageArray = [];//カレンダーから取得した予定を格納

// 全ての予定を1つの文章につなげて出力
  for (var i in events) {
     const eventTitle = events[i].getTitle();
    
    // 「自宅」と「オフィス」の予定を除外
    if (eventTitle.includes("自宅") || eventTitle.includes("オフィス")) {
      continue;
    }
    
    //当日の予定の件数
    const addedNum = Number(i) + 1;
    const number =  "|" + addedNum + "|" ;

    //予定の開始時刻
    const startHours = "0" + events[i].getStartTime().getHours();
    const startMinutes = "0" + events[i].getStartTime().getMinutes();
    const startTime = startHours.slice(-2) +":"+ startMinutes.slice(-2); //データ型から文字列に変換

    //予定の終了時刻
    const endHours = "0" + events[i].getEndTime().getHours();
    const endMinutes = "0" + events[i].getEndTime().getMinutes();
    const endTime = endHours.slice(-2) +":"+ endMinutes.slice(-2); //データ型から文字列に変換

    // MTG一覧出力アウトライン
    const outline = "|MTG|開始~終了|所要時間(分)|\n|--|--|--|\n";

    // 作業時間
    const workingTime = events[i].getEndTime() - events[i].getStartTime() ;
    const workingTimeResult = workingTime /60000;

    //取得した情報を一文にし、配列に格納
    const nippoOutline = "### MTG\n"
    const time =  startTime +" - "+ endTime +  "|"  ;
    const title = events[i].getTitle() + "|";
    const totalTime = workingTimeResult + "|";
    const message =   title  + time  + totalTime +  "\n" ;

    messageArray.push(message);
    var result = nippoOutline + outline + messageArray.join('') ;
  }
  Logger.log(result);

}

上記のコードに書き換えて、「実行」を押してみてください
マークダウン形式で以下のように 出力されたのではないでしょうか?

### MTG
|MTG|開始~終了|所要時間(分)|
|--|--|--|
うおおおおおおおおお|11:00 - 11:30|30|
おひる|12:00 - 13:00|60|
piyopiyo|15:00 - 16:00|60|

以上、GASを使ってGoogleカレンダーの予定を取得してみようの巻でした。

コードの細かい文法の解説はしませんが、都度調べながら、良きコードに書き換えていってください。(日報用に急いで作ったやつなので、結構適当な変数名をつけてヨシっとしているところがたくさんあります...)

それでは最後まで見ていただきありがとうございました〜〜〜〜〜〜:tulip:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?