ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回
【GAS】変更した箇所の一覧を作成する(Gスプレッドシート)
今回は、とっても価値の高い方法をお伝えします。
これを知ることであなたは、
-
- JavaScriptで正規表現の使い方がわかります。
- 文字列の日時からGoogleカレンダーに設定する日時が作成できます。
なので、サクッとマスターして
と答えてあげてください。
課題
2024/3/18(月)[13:00]の文字列を2024-3-28 13:00 として
JavaScriptで認識させたい。
スプレッドシート側で文字列から日付を取り出す場合
動画はこちら
シートはこちら
*クリックすることでシートが開きます。(コピーしてお使いください)
スクリプト
function myFunction() {
let day = '2024/3/18(月) [14:00]'
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)
const calendar = CalendarApp.getDefaultCalendar()
// 予定を作成
calendar.createEvent(
"テスト",
startDate,
endDate
)
}
ポイント
日付の作成方法
現在の日時で作成する場合
let date = new Date()
2024年2月18日 13:00 で作成する場合
let date = new Date(2024,1,18,13,00)
※月は0から始まるので-1する
正規表現
mach関数内で正規表現を指定する場合は、/と/でくくります。
主な正規表現
記号 | 意味 | 備考 |
. | 改行以外の文字 | |
* | 直前の文字の0文字以上の繰り返し | |
+ | 直前の文字の1文字以上の繰り返し | \d+ だと1文字以上の数字 |
\d | 数字 | [0-9]と同じ |
\D | 数字以外 | |
( ) | カッコ内が参照可能となる | (\d+)で連続した数字の取得 |
例)
const result = day.match(/(\d+)\/(\d+)\/(\d+)\D*\[(\d+):(\d+)\]/)
でresultにヒットした数字が取得できます。
上記の場合、
result[0]には全体でヒットした文字列
result[1]最初の数字(\d)で取得した文字列(年)
・・・
result[5]最後の数字(\d)で取得した文字列(分)
となります。
なのであとは、 new Dateの引数にresult[1]~result[5]を指定すればOKです。
最後までご覧いただきありがとうございます。
つぎはこちら
【GAS】2次元配列からGoogleカレンダーに登録する
コメント