【GAS】2次元配列からGoogleカレンダーに登録する

応用

GAS応用の一覧

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

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

前回

【GAS】日付と時間の文字列から日時を取得する(正規表現) JavaScript
  • JavaScriptで正規表現の使い方がわかります。
  • 文字列の日時からGoogleカレンダーに設定する日時が作成できます。
  • 今回は、とっても価値の高い方法をお伝えします。


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

    • GASで2次元配列の使い方がわかります。
    • 関数に引数を渡す方法がわかります。

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

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

    質問

    Googleフォームで集計した一覧からGoogleカレンダーに予定を登録したい
    第n希望が記載してあるセルに該当する日時とお子様氏名で登録する

    例)
    ① 2024/3/18 13:00~14:00に 第1希望 竹中半兵衛で登録
    ② 2024/3/18 15:00~16:00に 第1希望 佐々木小次郎、小太郎で登録

    動画はこちら

    シートはこちら


    *クリックすることでシートが開きます。(コピーしてお使いください)

    スクリプト

    function readrange() {
      const CLM_NAME = 0 //お子様氏名のカラム位置
      const ROW_DATETIME = 0
      const ss = SpreadsheetApp.getActiveSheet()
      const vals = ss.getRange("C1:H13").getValues()
    
    
    
      for (let clm = 3; clm < vals[0].length; clm++) {
    
    
        for (let row = 1; row < vals.length; row++) {
          if (vals[row][clm]) {
    
    
            // console.log(vals[ROW_DATETIME][clm])
            // console.log(vals[row][clm])
            // console.log(vals[row][CLM_NAME])
    
    
            registpaln(vals[ROW_DATETIME][clm],vals[row][CLM_NAME]+" "+vals[row][clm])
          }
        }
      }
    }
    
    
    function testa(){
      registpaln('2024/3/18(月) [14:00]',"テストタイトル")
    }
    
    
    
    /**
     * 日時とタイトルでカレンダーに登録
     * day 日時
     * title 予定名
     */
    function registpaln(day,title) {
    
    
      // let day = '2024/3/18(月) [14:00]'
      console.log(day)
    
    
      const result = day.match(/(\d+)\/(\d+)\/(\d+)\D+\[(\d+):(\d+)\]/)
      console.log(result[1], result[2], result[3], result[4], result[5])
    
    
    
      // 開始日時を作成
      let startDate = new Date(result[1], result[2] - 1, result[3], result[4], result[5])
    
    
      console.log(startDate)
    
    
      // 終了日時を作成
      let endDate = new Date(result[1], result[2] - 1, result[3], Number(result[4]) + 1, result[5])
      console.log(endDate)
    
    
    
      console.log(title)
    
    
      const calendar = CalendarApp.getDefaultCalendar()
    
    
    
      // 予定を作成
      calendar.createEvent(
        title,
        startDate,
        endDate
      )
    
    
    
    }

    ポイント

    1列ずつ処理します。

    getValues関数で取得した2次元配列valsはvals[行][列]となります。

    そしてカレンダーに登録したい子供の名前は最初の列なので0となります。

    なのでvals[行][0]→子供の名前です。

    こんな感じです。

    同様にvals[0][列]が登録時間となります。

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

    つぎはこちら

    【GAS】最下部を取得し別シートのデータをコピペする方法
  • GASでコピペする方法がわかります。
  • 今日の日付の挿入方法がわかります。
  • 最下部の位置を取得する方法がわかります。
  • GAS応用の一覧

    コメント

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