ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】日付と時間の文字列から日時を取得する(正規表現) JavaScript
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
- 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】最下部を取得し別シートのデータをコピペする方法