【Googleカレンダー】予定を一括登録・削除する方法

Googleカレンダー

忙しい人
忙しい人

予定の一括登録をCSVでできるのは知っているけど一度間違えたら修正できないので正直使っていません。

ジタン・セヨ
ジタン・セヨ

そんな時はGASとスプレットシートを使えば簡単に解決できますよ


この記事を見ていただければGAS(Googleのアプリを操作できるプログラミング言語)を使って、初心者でも5分くらいで予定の一括登録や一括削除ができるよう設定することが可能になります。



完成イメージ

スプレットシートで一括登録、もしくは一括削除をクリックすると

Googleカレンダーに結果が即反映される

目次
  1. しんどい登録作業はやめよう
  2. 一括登録・削除の具体的な設定の仕方
    • 手順1. スプレットシートを作成
    • 手順2. GASにコードを貼り付け
    • 手順3. 起動ボタンとマクロの設定
  3. さらにカスタマイズして使うには・・・

しんどい登録作業はやめよう

皆さんは、Googleカレンダーに予定を打ち込む際、手入力をしていませんか?

予定が2,3個だけであればまだしも、10個、20個あったとしたら登録するだけで30分くらいはかかってしまいそうです。。。

予定をCSVで一括登録しているよという方もいるかもしれませんが、もし間違えて20個登録してしまえば全て手作業で削除していかなくてはいけません。

そんなことで皆さんの貴重な時間を消費していてはもったいないです。

GASとGoogleスプレットシートの組み合わせで予定を一括で登録・削除できる方法を紹介します。初心者でもそのまま真似してもらえれば、5分で設定できます!

GASとは

  Google Apps Scriptの略でGmailやGoogleカレンダーなどGoogleが提供するサービスをより便利に活用するために開発されたプログラミング言語のこと。詳細はこちらの記事がおすすめ。

Googleスプレットシートとは

 エクセルに似た表計算ソフトでブラウザ上で動く。ネット上データを保存するため、windowsでもmacでも共有がしやすくい。個人的にはGASの登場でエクセルよりもこちらの方が圧倒的に便利だと感じる。

一括登録・削除の具体的な設定の仕方

  \早速実践編です/

手順1. Googleスプレットシートを新規で作成

Googleアカウントにログインし、「ドライブ」をクリック

「新規」クリックし、「Googleスプレットシート」をクリック

新規のスプレットシートに下記の内容をコピペ

【デモ】実際のスプレッドシートはこちら
コピーしてご自身のアカウントにペーストして下さい

注意点: この時、一括登録・一括削除のボタンはコピペできません(後ほど設置します。方法も後ほど解説しています。)

手順2. GASにコードを貼り付け

スプレットシート内の「ツール」をクリックし、「スクリプトエディタ」をクリック

元々のコードを削除し、下記内容をコピー&ペースト

/**
 * 予定を作成する
 */
function Gcreate() {
  
  // 読み取り範囲(表の始まり行と終わり列)
  const topRow = 6;
  const lastCol = 9;

  // 0始まりで列を指定しておく
  const statusCellNum = 1;
  const dayCellNum = 2;
  const startCellNum = 4;
  const endCellNum = 5;
  const titleCellNum = 6;
  const locationCellNum = 7;
  const descriptionCellNum = 8;

  // シートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 予定の最終行を取得
  var lastRow = sheet.getLastRow();
  
  //予定の一覧を取得
  var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues();

  // googleカレンダーの取得
  var calender = CalendarApp.getDefaultCalendar();

  //順に予定を作成(今回は正しい値が来ることを想定)
  for (i = 0; i <= lastRow - topRow; i++) {

    //「済」っぽいのか、空の場合は飛ばす
    var status = contents[i][statusCellNum];
      if (
      status == "済" ||
      status == "作成済" ||
      status == "済み" ||
      status == "OK" ||
      contents[i][dayCellNum] == ""
    ) {
      continue;
    }

    // 値をセット 日時はフォーマットして保持
    var day = new Date(contents[i][dayCellNum]);
    var startTime = contents[i][startCellNum];
    var endTime = contents[i][endCellNum];
    var title = contents[i][titleCellNum];
    // 場所と詳細をセット
    var options = {location: contents[i][locationCellNum], description: contents[i][descriptionCellNum]};
    
    try {
      // 開始終了が無ければ終日で設定
      if (startTime == '' || endTime == '') {
        //予定を作成
        var event = calender.createAllDayEvent(
          title,
          new Date(day),
          options
        );
        var id = event.getId();
        sheet.getRange(topRow + i, 4).setValue(id);
      
        // 開始終了時間があれば範囲で設定
      } else {
        // 開始日時をフォーマット
        var startDate = new Date(day);
        startDate.setHours(startTime.getHours())
        startDate.setMinutes(startTime.getMinutes());
        // 終了日時をフォーマット
        var endDate = new Date(day);
        endDate.setHours(endTime.getHours())
        endDate.setMinutes(endTime.getMinutes());
        // 予定を作成
        var event = calender.createEvent(
          title,
          startDate,
          endDate,
          options
        );
         var id = event.getId();
        sheet.getRange(topRow + i, 4).setValue(id);
      }

      //無事に予定が作成されたら「済」にする
      sheet.getRange(topRow + i, 2).setValue("作成済");


    // エラーの場合(今回はログ出力のみ)
    } catch(e) {
      Logger.log(e);
    }
    
  }
}


/**
 * 予定を削除する
 */

function Gdelete(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var calender = CalendarApp.getDefaultCalendar();
  const topRow = 6;
  const lastCol = 9;
  var LastRow     = sheet.getDataRange().getLastRow();
  var LastCol     = sheet.getDataRange().getLastColumn();

  var eventsRange = sheet.getRange(6,2,LastRow,LastCol);
  var events      = eventsRange.getValues();

  for(var i=0; i<events.length; i++){
   
      var eventId = events[i][2];
      var event = calender.getEventById(eventId);
      event.deleteEvent();
      sheet.getRange(topRow + i, 2).clear();
      sheet.getRange(topRow + i, 4).clear();
  }
  
}

コピペできたらctrl + Sで保存

手順3. 起動ボタンとマクロの設定

スプレットシート に戻り、「挿入」をクリックし、「図形描画」をクリック

下記のように好きな図形を選んで大きさを決める

テキストボックスに「一括登録」と記入

保存して終了する。

設置したボタンの右上の点々をクリックし、「スクリプトを割り当て」をクリック

ボックス内に「Gcreate」と記入し、OKを押す。

これで、一括登録のボタンが完成

次に同じように一括削除も同じ手順で作成する。※スクリプトを割り当てには「Gdelete」と記入する

下記のようにボタンの設置が完了できたら実際に動くか確かめために一括登録のボタンをクリック

最初の動作では承認が必要と出るので「続行」をクリック

実行したいアカウントを選択

「詳細」をクリック ※自分で作ったスクリプトを実行するだけなので問題ありません。

「安全でないページに移動」をクリック ※自分で作ったスクリプトを実行するだけなので問題ありません。

「許可」をクリック

さらにカスタマイズして使うには

GASを学んでいけばさらにカスタマイズして使うことができます。

おすすめのGAS入門書はこちら

また、GASとGoogleカレンダーの組み合わせは無限大で、例えば、本日のカレンダーの予定から日報を自動で作成し、Gmailで送ったりすることもできます。今後記事を書きますのでお楽しみに。

コメント

タイトルとURLをコピーしました