【GAS】スプレッドシート内容を取得する

スプレッドシートの内容を取得する方法

スプレッドシートに何か記述しておいてください。

こんな感じのシートを用意してみました。

let chatBotSpreadsheet = null;
// スプレッドシートを取得する
function getSpreadsheet() {
  // スプレッドシートの ID
  const SSID = 'スプレッドシートのID';
  if(chatBotSpreadsheet === null) chatBotSpreadsheet = SpreadsheetApp.openById(SSID);
  return chatBotSpreadsheet;
}

// シートの内容を全て取得する
function getSheetValues() {
  // Spreadsheet クラスから Sheet クラスを取得する
  const sheet = getSpreadsheet().getSheets()[0];
  // Sheet クラスから Range クラスを取得し、値を取得する
  return sheet.getDataRange().getValues();
}

// シートの内容を一部取得する
function getSheetValue(row, col) {
  // Spreadsheet クラスから Sheet クラスを取得する
  const sheet = getSpreadsheet().getSheets()[0];
  // Sheet クラスから Range クラスを取得し値を返す
  return sheet.getRange(row, col).getValues();
}

// シートの内容を一部取得する
function getSheetRangeValues(srow, scol, erow, ecol) {
  // Spreadsheet クラスから Sheet クラスを取得する
  const sheet = getSpreadsheet().getSheets()[0];
  // Sheet クラスから Range クラスを取得し値を返す
  return sheet.getRange(srow, scol, erow, ecol).getValues();
}

// テスト
function test() {
  // 6行・1列目(A列)の値を取得する
  console.log(getSheetValue(6, 1));
  // [
  //   [ '離してみる' ]
  // ]
  // 2行・2列目 ~ 4行・3列目の範囲の値を取得する
  console.log(getSheetRangeValues(2, 2, 4, 3));
  // [
  //  [ 'bbb', 'cccc', '' ],
  //  [ 'eee', 'fff', '' ],
  //  [ 2, 3, '' ],
  //  [ '', '', '' ]
  //]
  // シート上の値を取得する
  console.log(getSheetValues());
  // [
  //   [ 'aaa bbb', '', '', '' ],
  //   [ 'aaa', 'bbb', 'cccc', '' ],
  //   [ 'ddd', 'eee', 'fff', '' ],
  //   [ 'test 1', 2, 3, '' ],
  //   [ '', '', '', '' ],
  //   [ '離してみる', '', '', '' ],
  //   [ '', '', '', '' ],
  //   [ '', '', '', '列方向にも離してみる' ]
  // ]
}

スプレッドシートの値を読み込む上で必要になるものは、
1.読み込み先のスプレッドシート(スプレッドシートの ID)
2.読み込み先(シートの範囲)

3.値の取得
です。

1.書き込み先のスプレッドシートを開きます。
スプレッドシートの ID は、スプレッドシートを開いた時の URL の一部です。

上記画像だと
https://docs.google.com/spreadsheets/d/この部分/edit#gid=0
になります。

2.読み込み先を取得します。
SpreadSheet クラス → Sheet クラス → Range クラス → シートの値、の順で取得します。
スプレッドシートの中から、読み込みたい値があるシートを取得します。
シートの中から読み込みたい箇所を選択します。
リファレンスにもあるように、引数の数で指定できる範囲が変わります。
getRange("A2") とすることもできれば、getRange(2, 1) とすることもできます。
3.値の取得
値の取得は読み込み先を指定した後、 Range クラスを利用して行います。
Range クラスの getValues() は、指定した範囲の値を二次元配列として返します。
指定した範囲が一つの場合でも二次元配列として返ってくるので注意してください。
また、指定した範囲のうち、シート上の値がない場合は空白の文字列になります。
※シート上の値が日付だと、Date クラスで返ってくるので注意が必要です。

まとめ

1.用意されている SpreadsheetApp から Spreadsheet クラスを取得
2.Spreadsheet クラスから Sheet クラスを取得
3.Sheet クラスから読み込みたい範囲(Range クラス)を取得
4.Range クラスからシートの値を取得する
範囲の指定や、取得した値の取り扱いには注意しましょう!