Google Apps Script スプレッドシートからカレンダーへの自動入力

Google Apps Scriptに関しての質問です。
【ザ・初心者です。】
こちらのサイトの知恵を拝借して、地域のための市民団体の受付にて、Google のフォーム→スプレッドシート→カレンダーへの自動予約の仕組みを作ろうと考えております。様々参考に作ろうとしているのですが1箇所だけうまく行かず!もう一歩のところまで、できているのですが、うまく行かない点ですが、日付の部分です。

Googleスプレッドシートには次のように日付が入力されます。
2023/9/16

そこで、Splitを用いて、以下の通りにしております。

let y = Number(date.split('/')[0]);
let m = Number(date.split('/')[1].split('/')[0]) - 1;
let d = Number(date.split('/')[1].split('/')[0]);

このようにすると、カレンダーには、2023年9月9日と入力されてしまいます。
というのも、「/」は2つあり、双方とも一つ目の「/」の次の部分を抜き出すことという指示になっているのが原因だと理解しています。

そこで上記の例では9日はなく16日の予約となるように
また今後も、永続的に自動入力されるためには
上記のsplitの部分をどのように書き換えるとよいか、ご教示いただけませんでしょうか

ー※こちらのサイトを通じて、以下のように構築できましたーーー

function createEvent(e) {
let [timestamp, email, username, date, time1, time2] = e.values;
let id = '自分のID'; //GoogleカレンダーのID
let calendar = CalendarApp.getCalendarById(id);
let title = ${username};

let y = Number(date.split('/')[0]);
let m = Number(date.split('/')[1].split('/')[0]) - 1;
let d = Number(date.split('/')[1].split('/')[0]);
let hoursS = Number(time1.split(':')[0]);
let minutesS = Number(time1.split(':')[1]);
let hoursE = Number(time2.split(':')[0]);
let minutesE = Number(time2.split(':')[1]);
let startTime = new Date(y, m, d, hoursS, minutesS);
let endTime = new Date(y, m, d, hoursE, minutesE);

let description =

▼申込内容 予約日時: ${timestamp} 階・利用団体 : ${username} 予約日 : ${date} 予約開始時間: ${time1} 予約終了時間: ${time2};

let options = {
description: description,
};
calendar.createEvent(title, startTime, endTime, options);
}

コメントを投稿

0 コメント