スプレッドシートに書いた予定が自動的にGoogleカレンダーに反映される方法

Googleカレンダー

Googleカレンダー関連

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

スプレッドシートからGoogleカレンダーに予定を流し込む(インポート、連携する)方法
スプレッドシートに記載した予定をGoogleカレンダーに連動させることができます。 「GASって何?」状態であってもコピペで簡単にできます。

今回は、とっても価値の高い方法をお伝えします。


これを知ることであなたは、

  • GASを定期的に動作させる方法がわかります。
  • スプレッドシートに予定を書いておくと自動的にGoogleカレンダーに
    反映されるようになります。

なので、サクッとマスターして

と答えてあげてください。

 

質問元の動画
★Googleカレンダーに複数の予定をまとめて入力する方法(Googleスプレッドシート)[字幕あり]
いただいたご質問

 

動画はこちら

 

Googleスプレッドシート に書いた予定が自動的にGoogleカレンダーに反映される方法

シートはこちら

*クリックすることでシートが開きます。

 

スクリプト

/**
 * Googleカレンダーに予定を追加する
 */
function CreateSchedule() {


  //シート名
  const SH_NAME = "カレンダー"


  // googleカレンダーの取得
  const calendar = CalendarApp.getDefaultCalendar()


  // 読み取り範囲(表の始まり行と終わり列)
  const topRow = 2
  const lastCol = 7
  const statusCellCol = 1


  // 予定の一覧バッファ内の列(0始まり)
  const statusNum = 0
  const dayNum = 1
  const startNum = 2
  const endNum = 3
  const titleNum = 4
  const locationNum = 5
  const descriptionNum = 6


  // シートを取得
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SH_NAME)


  // 予定の最終行を取得
  let lastRow = sheet.getLastRow()


  //予定の一覧をバッファに取得
  const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues()


  //順に予定を作成
  for (let i = 0; i <= lastRow - topRow; i++) {


    //「済」の場合は無視する
    if (contents[i][statusNum] === "済") {
      continue
    }


    // 値をセット 日時はフォーマットして保持
    let day = contents[i][dayNum]
    let startTime = contents[i][startNum]
    let endTime = contents[i][endNum]
    let title = contents[i][titleNum]


    // 場所と詳細をセット
    let options = { location: contents[i][locationNum], description: contents[i][descriptionNum] }


    console.log(day + " " + contents[i][titleNum])


    try {
      // 開始終了時刻が無ければ終日で設定
      if (startTime == '' || endTime == '') {
        //予定を作成
        calendar.createAllDayEvent(
          title,
          day,
          options
        )


        // 開始終了時刻があれば範囲で設定
      } else {
        // 開始日時を作成
        let startDate = new Date(day)
        startDate.setHours(startTime.getHours())
        startDate.setMinutes(startTime.getMinutes())


        // 終了日時を作成
        let endDate = new Date(day)
        endDate.setHours(endTime.getHours())
        endDate.setMinutes(endTime.getMinutes())


        // 予定を作成
        calendar.createEvent(
          title,
          startDate,
          endDate,
          options
        )
      }


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


      // エラーの場合ログ出力する
    } catch (e) {
      Logger.log(e)
    }
  }


  // 完了通知
  // Browser.msgBox("予定を追加しました。")
}

トリガーの設定

Step1.

①[時計]アイコンをクリックします。

 

Step2.

①[トリガーを追加]をクリックします。

 

 

Step3.

①「実行する関数名(Createchadule)」を選択します。
②「時間主導型」を選択します。
③「分ベースのタイマー」を選択します。
④「1分おき」(あなたがチェックしたいタイミング)を選択します。
⑤「保存」をクリックします。

これで、自動的にGoogleカレンダーに反映されるようになります。

 

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

スプレッドシートからGoogleカレンダーに予定を流し込む(インポートする)方法2(色、カレンダーの指定あり)
  • GASがわからなくてもスプレッドシートからGoogleカレンダーに予定を追加する仕組みを作ることができます。
  • 色の指定やカレンダーを指定することができます。
  • スクリプトの登録方法がわかります。
  • Googleカレンダー関連

    コメント

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