Googleスプレッドシートに記載されたスケジュールをGoogleカレンダーに【終日のスケジュール】で登録するGAS(Google Apps Script)

前回、Googleスプレッドシートにデータを入力したらGoogleカレンダーにスケジュール登録するGAS(Google Apps Script)を考えましたが、今回は少しだけスクリプトを変更してGoogleカレンダーにスケジュール登録する際に「終日の予定」として登録するスクリプトを考えます。


Googleスプレッドシートに記載されたスケジュールをGoogleカレンダーに【終日のスケジュール】で登録するGAS(Google Apps Script)


前回の記事ではGoogleカレンダーにイベントを登録する際に【データが入力された時刻】でカレンダーへ登録をしていましたが今回の記事では【終日のイベント】としてGoogleカレンダーに登録します。ここが前回の記事との違いになります。


前回の記事はこちら↓



実行動画を準備したので確認していただければ前回との違いが確認できると思います。

動画作成にあたり、今回新たに【タスク管理(終日)】というカレンダーを作成しています。

終日の予定として登録されるのでカレンダーの上部にデータが表示されることを確認していただければと思います。↓




時刻の指定をする必要がない分シンプルでスクリプトもわかりやすくなっていると感じます。

というわけで前回のGASのスクリプトをベースにして少し書き換えてみました↓

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function myFunction() {
   //■変数宣言 
    
  let sheet = SpreadsheetApp.getActiveSheet();  //アクティブなスプレッドシートを取得
    
  let lastrow = sheet.getRange(sheet.getMaxRows(),1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow(); //A列の最終行を取得する
  
  //■エラー処理 もし最終行が「1」だったら処理の実行を終了する
  
  if(lastrow<2){
    Browser.msgBox("A列にデータを記載してください");
    return;
  }
     
 //■処理実行部分
  
     sheet.getRange(lastrow,2).setValue(new Date()); //B列に現在の日付データを追加する
  
    
  for(let i=2;i<=lastrow;i++){
    
    if(sheet.getRange(i,3).getValue()===""){
         
          
        const CALENDAR_ID = "ここにGoogleカレンダーのIDを記載する"; //カレンダーID
   
        const calendar = CalendarApp.getCalendarById(CALENDAR_ID);
           
   
        const title = sheet.getRange(i,1).getValue(); //A列のデータを格納する
   
        const startTime = new Date(sheet.getRange(i,2).getValue()); //B列の日付データを格納する(Googleカレンダーへ登録する開始時間)
     
         
         
        calendar.createAllDayEvent(title, startTime); //カレンダーへ登録する
   
        //C列のセルに「転記済み」と記載する。
   
        sheet.getRange(i,3).setValue("転記済み");
   
    }
  }
}


前回のGASから追加している点は一切なく、一部を削除し、一部書き換えただけになります。

GAS(Google Apps Script)の内容説明 終日の予定登録はcreateAllDayEventを使う。



前回の記事のGASを書き換えているだけなので説明することは多くありません。

まずは終日のスケジュールを登録する際には【createAllDayEvent】を使用すると実現することができます↓

https://developers.google.com/apps-script/referenceより引用



上の画像によると【createAllDayEvent】を使う際には2つのデータを準備する必要があり、1つはいイベントのタイトルとなる文字データ、2つ目にイベントの日付となる日付データのようです。


前回の記事では開始時刻と終了時刻を準備する必要がありましたが今回は必要ありません。


イベントのタイトルに関しては前回の記事と同様A列にありますから、これを取得すればOKなので問題ありません。この部分です↓



これで定数「title」に対してA列のタイトルデータが格納されます。



2つ目の日付のデータに関してもGASが実行されることでA列にデータを入力したときの時刻がB列へ記載されることになっており、そのデータを取得すればOKとなります。これで日付のデータの準備が完了します。

この部分でA列にデータが入力された日付をB列に入力させます↓




で、入力された日付データをこの部分で定数「srartTime」に格納しています。


これで【createAllDayEvent】を使う際に必要な2つのデータの準備ができたのであとは実行するだけです↓


最後に前回同様、スプレッドシートに変更があった際にGASが実行されるようにトリガーを設定すると完成になります。

まとめ


Googleカレンダーへ【終日のイベント】として登録するGASを記事にしました。

終日のイベントとして登録するため開始時間と終了時間を設定する必要が無い分、前回の記事に比べてGASのスクリプトがシンプルなものになります。

タスクを完了した時間にこだわりがない場合にはこちらの方法を使っていただいてもいいかもしれません。好みで使いたいほうを使っていただければと思います。

前回の記事もよければどうぞ↓




【本日の近況報告】

修理に出していたスマホが戻ってきました。
今度は画面を割らないように注意しようと思います。

弱虫ペダル73巻購入。

【本日の1曲】

MUD/TIGER FEET

THE BOTSのTOKYO JUNKTOWNの元ネタになっていることを最近知りました。

オリジナルの曲もいいですね、グラムロックになるんでしょうか。

個人的にこの曲聴くと次はT.Rex聴きたくなります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!