前回作成した、カレンダーからスケジュール情報をスプレッドシートに出力する機能の改修を行います。
タイトルの内容から見ていただいている方は、見出し 選択した日付(From/To)をGASで取得できるようにする に知りたいことが記載されていると思います!
前回の記事はこちら。
今回やりたいこと
以下のように、スプレッドシート内で日付を選択し、その範囲のカレンダー情報を出力できるようにしたい。


具体的には以下に分けて改修していきました。
- スプレッドシート内でカレンダー形式で日付(From/To)を選択できるようにする
- 選択した日付(From/To)をGASで取得できるようにする
- 取得した日付をカレンダー情報出力の日付に使用できるようにする
スプレッドシート内でカレンダー形式で日付(From/To)を選択できるようにする
①スプレッドシートでカレンダー形式で日付を選択できるようにするセルを選択し、データ>データの入力規則を押下

②以下ポップアップが表示されるので、条件で「日付」を選択し、保存を押下

③対象のセルに値を入力しようとすると、カレンダーで日付を選択できる

選択した日付(From/To)をGASで取得できるようにする
スプレッドシートの日付情報を取得する関数(getSpreadsheetDate)を作成する。
//スプレッドシートの日付情報を取得する関数
function getSpreadsheetDate() {
//現在のスプレッドシートを取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//現在のシートを取得
var sheet = spreadsheet.getActiveSheet();
//指定するセルの範囲(A2,C2)を取得
var rangeDateFrom = sheet.getRange("A2");
var rangeDateTo = sheet.getRange("C2");
//日付情報を取得する
var dateFrom = rangeDateFrom.getValue();
var dateTo = rangeDateTo.getValue();
return [dateFrom,dateTo];
}
取得した日付をカレンダー情報出力の日付に使用できるようにする
①スプレッドシートの日付情報を取得し、startTime, endTimeに代入する。
let [startTime, endTime] = getSpreadsheetDate();
getCalendarEventsの関数の全量は以下。
//カレンダー情報出力の関数
function getCalendarEvents() {
const calendar = CalendarApp.getCalendarById(CALENDAR_ID);
//スプレッドシートの日付情報を取得しstartTime,endTimeに代入
let [startTime, endTime] = getSpreadsheetDate();
const events = calendar.getEvents(startTime, endTime);
const values = [];
for(const event of events){
const record = [
event.getTitle(),
event.getStartTime(),
event.getEndTime()
];
values.push(record);
}
SpreadsheetApp.getActiveSheet().getRange(5, 1, values.length, values[0].length).setValues(values);
console.log('finished');
}
完成
以下のようにスプレッドシートで指定した日付を元に、カレンダー情報を取得できるようになりました!
参考にさせていただいたサイト
【Google Apps Script入門】セルの取得・変更をする
https://uxmilk.jp/25841
コメント