スプレッドシートで指定した日付情報をGoogleAppsScriptで取得する方法

スポンサーリンク
Google Apps Script

前回作成した、カレンダーからスケジュール情報をスプレッドシートに出力する機能の改修を行います。
タイトルの内容から見ていただいている方は、見出し 選択した日付(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

コメント

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