2022/03/01に更新

【GASで時短】カレンダーの予定を一括で作成する

カレンダースプレッドシート

スプレッドシートに入力した値を元に、カレンダーの予定をまとめて作成することができるGoogle Apps Scriptです。

こんな悩みを解決します


  • 大量の予定を作ることになった。1件ずつカレンダーに手動で登録するのはやりたくない。
  • 旅行やイベントの細かいスケジュールがスプレッドシートにある。これをそのままカレンダーに追加したい。

用意するもの


特にありません。今お使いのスプレッドシートに組み込めます。

このスクリプトで出来ること


スプレッドシートに書いてある情報を元に、指定したカレンダーに予定を追加します。

使い方


1.準備

カレンダーの予定作成に必要な情報を、シートにまとめます。
1行目は項目として無視しますので、2行目以降に下記情報を入力します。

  • A列: 予定のタイトル
  • B列: 開始日時(セルの表示形式は "日時" にしてください)
  • C列: 終了日時(セルの表示形式は "日時" にしてください)
  • D列: 説明
  • E列: 場所

2.スクリプトの実行

上のメニューに有る「スクリプト実行」から「カレンダーの予定を一括作成する」を実行します。

3.カレンダーIDの入力

カレンダーID、またはメールアドレスを入力します。
自分の予定を出力する場合は、自分のGmailアドレスを入力してください。
他人のカレンダーに追加したい場合は、その人のカレンダーを自分のGoogleカレンダーに追加し、「設定」からカレンダーIDをコピーして入力してください。
なお、そのカレンダーに対して「予定の変更」以上のアクセス権限が無いと予定の作成はできません。

4.結果の確認

カレンダーを見てみると、シートに入力した内容で予定が作成されています。

説明も反映されていますね。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00051/index.html
 */

function onOpen() {
  // スプレッドシートを開いたときに実行される関数

  // UIの取得
  const ui = SpreadsheetApp.getUi()

  // メニューの表示名
  const menu = ui.createMenu('スクリプト実行');

  // メニューに追加するボタン
  menu.addItem('カレンダーの予定を一括作成する', 'create_calendar_schedule');

  // メニューを画面に追加する
  menu.addToUi();
}

function create_calendar_schedule() {

  // UIを取得
  const ui = SpreadsheetApp.getUi();

  // アクティブなスプレッドシート、シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // カレンダーIDを入力させる
  const response = ui.prompt('予定を追加するカレンダーのID またはメールアドレスを入力してください', ui.ButtonSet.OK_CANCEL);

  // キャンセルが押されたらスクリプトを終了する
  if (response.getSelectedButton() == ui.Button.CANCEL) {
    return;
  }

  // 入力された文字(カレンダーID)を取得する
  const calendar_id = response.getResponseText();

  // カレンダーを取得
  const calendar = CalendarApp.getCalendarById(calendar_id);

  // 予定の情報をスプレッドシートから取得する
  const range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  const values = range.getValues();

  // ループして1行ずつ予定を作成していく
  for (let i = 1; i < values.length; i++) { // 1行目は項目名なので開始値は1

    let title = values[i][0]; //予定のタイトル
    let begin = values[i][1]; //予定の開始日時
    let end = values[i][2]; //予定の終了日時
    let description = values[i][3]; //予定の説明
    let location = values[i][4]; //場所

    // 説明と場所はoption
    let options = {
      description: description,
      location: location
    }

    // 予定を作成する
    calendar.createEvent(title, begin, end, options);

  }

}

関連するアプリ


【GASで時短】指定した月のカレンダーを生成する

年と月を指定すると、セルにカレンダーが出現するGoogle Apps Scriptです。カレンダーを入れたくなって調べてみたら標準機能にはなく、数式でやるにも結構面倒な感じだったので一発で作ってくれるGASを書いてみました。想像の3倍は面倒でした・・・。

【GASで時短】指定した年の12ヶ月分のカレンダーを生成する

指定した年の12ヶ月分のカレンダーを生成してくれるGoogle Apps Scriptです。前回作成した「指定した月のカレンダーを生成する」スクリプトをベースに、1年分出力するように変更してみました。横3 ✕ 縦4の形式で生成されます。

【GASで時短】様々な国の「国民の祝日」を取得する

Googleが用意してくれている祝日カレンダーをもとに、1年間の祝日をスプレッドシートに出力するGoogle Apps Scriptです。 祝日は年によって変わったりするので確認が面倒なのと、国外との取引がある時にその国の祝日がわかれば便利だなと思い作成しました。

【GASで時短】CSVファイルを直接シートに読み込む

インターネット上にあるCSVファイルをシートに直接取り込むGoogle Apps Scriptです。オープンデータ等の取り込みが楽になるかもしれません。

【GASで時短】カレンダーの予定をスプレッドシートに出力する

Google カレンダーの予定を、スプレッドシートにまとめて出力するGoogle Apps Scriptです。カレンダーIDはダイアログボックスで入力できます。

【GASで時短】予定をすべて非公開にする

Googleカレンダーの予定を全て非公開にするGoogle Apps Scriptです。組織内で使っているとカレンダー自体は共有されていますので、隠したい予定は個別に非公開化する必要があります。誤って公開している予定が大量にある時にどうぞ。

【GASで便利に】本日の予定をまとめてSlackに通知する

Googleカレンダーの今日の予定をSlackに通知してくれるGoogle Apps Scriptです。1日分の予定は朝にまとめて知りたいですよね。SlackのIncoming Webhookを使用しています。

タグ一覧

最新のアプリ

人気のアプリ

myfunc.jp