にわかプログラマの備忘録

仕事の過程で調べたことを忘れないように記載しています

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

値の取得法色々

記載範囲すべての値を取得する

function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //記載範囲すべてを取得(Object)
  let range = sheet.getDataRange();
  //範囲の値を取得(2次元配列)
  let values = range.getValues();

  Logger.log(values);
}

getDataRange()は記載のあるすべての範囲を取得します。

f:id:sorane0908:20210730145949j:plain
スプレッドシート

上記の表なら A1:C10 の範囲が取得されます。

getValues()は範囲の値を2次元配列で取得します。
上記の表だと
[[1.0, とくに, いち], [2.0, いみは, にい],...... [10.0, ……, じゅう]]
となります。

function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //記載範囲すべてを取得(Object)
  let range = sheet.getDataRange();
  //範囲の値を取得(2次元配列)
  let values = range.getValues();

  Logger.log(values[0][1]);//結果:いみは
}

となります。

特定のセルの値を取得

function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //特定のセルを取得
  //getRange(row, column)
  let range1 = sheet.getRange(1, 2); 
  //getRange(a1Notation)
  let range2 = getRange('B1');
  //値を取得
  let values1 = range1.getValue();
  let values2 = range2.getValue();

  Logger.log(values1);//結果:とくに
  Logger.log(values2);//結果:とくに
}

getRange(row, column)は直接位置を指定します。
indexではないので、A1が(1,1)となります。
getRange(a1Notation)
また、getValue()対象が1つの時に使うものになります。

f:id:sorane0908:20210730145949j:plain
スプレッドシート
function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //記載範囲すべてを取得(Object)
  let range = sheet.getDataRange();
  //1つの値を取得
  let values = range.getValue();

  Logger.log(values);//結果:1.0
}

getDataRange()(範囲)に対してgetValue()を使用すると一番左上の情報が取得されます。

function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //特定のセルを取得
  let range = sheet.getRange(1, 2);
  //範囲の値を取得(2次元配列)
  let values = range.getValues();

  Logger.log(values);//結果:[[とくに]]
}

getRange(row, column)に対してgetValues()を使用すると[0][0]にしか値のない、あまり意味のない2次元配列が出来上がります。

範囲を指定して値を取得する

function myFunction() {
  //アクティブなシートを取得
  let sheet = SpreadsheetApp.getActiveSheet();
  //範囲を取得
      //getRange(row, column, numRows)
   let range1 = sheet.getRange(1, 2, 2);  //取得範囲:B1:B2
      //getRange(row, column, numRows, numColumns)
   let range2 = sheet.getRange(1, 1, 2, 3);  //取得範囲:A1:C2
      //getRange(a1Notation)
   let range2 = sheet.getRange("A1:C2");  //取得範囲:A1:C2

  let values1 = range1.getValues();
  let values2 = range2.getValues();
  let values3 = range3.getValues();

  Logger.log(values1);
  Logger.log(values2);
  Logger.log(values3);
}

getRange(row, column, numRows)行・列・高さ を指定します。
getRange(row, column, numRows, numColumns)行・列・高さ・幅 を指定します。
getRange(a1Notation)A1表記またはR1C1表記で指定します。

getRange(a1Notation)ではシートではなくスプレッドシート(Excelでいうブック)に使用することでシートを指定して取得することができます。

function myFunction() {
  //アクティブなスプレッドシートを取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //範囲を取得
  let range = ss.getRange("シート2!A1:A3");
  //範囲の値を取得(2次元配列)
  let values = range.getValues();

  Logger.log(values);
}