LoginSignup
46
54

More than 3 years have passed since last update.

GASによるSpreadsheetの基本操作まとめ

Posted at

Google Apps Script(GAS)でスプレッドシートの値を読み書きする場合,最も基本的な操作として次のようなステップを経ます。

  1. Spreadsheetファイルを開く(SpreadSheetオブジェクトの取得)
  2. Sheetを開く(Sheetオブジェクトの取得)
  3. セルの範囲を指定(Rangeオブジェクトの取得)
  4. 操作(値の取得getValue(s)や書きこみsetValue(s)

例えば次のようにしてデータを取得します。

function getTableFromSheet() {
  // (1)Spreadsheetファイルを開く
  const SHEET_URL = "";
  const SHEET_NAME = "";
  var spreadSheet = SpreadsheetApp.openByUrl(SHEET_URL);
  // (2)Sheetを開く
  var sheet = spreadSheet.getSheetByName(SHEET_NAME);
  // (3)セルの範囲を指定・(4)値の取得
  var table = sheet.getDataRange().getValues();
  // 結果を表示
  Logger.log(table);
}

以下では,この1~4の手順ごとによく使うメソッドを紹介していきます。

Spreadsheetファイルを開く

次の3つの方法のいずれかでスプレッドシートを指定し,開きます。

  1. URLで指定する
  2. IDで指定する
  3. 名前で指定する

URLから開く:openByUrl()

const SHEET_URL = "";
var spreadSheet = SpreadsheetApp.openByUrl(SHEET_URL);

IDから開く:openById()

const SHEET_ID = "";
var spreadSheet = SpreadsheetApp.openById(SHEET_ID);

シートのURLは

https://docs.google.com/spreadsheets/d/XXXXXXX/edit

のような形になっています。XXXXXXXの部分がIDになります。

スプレッドシート名から開く:open()

Google DriveのAPIを使ってファイル名で検索し,そのFileオブジェクトを使ってシートを開く方法。

var files = DriveApp.getFilesByName('hoge');
var spreadSheet = SpreadsheetApp.open(files.next());

参考

Sheetを開く

名前で取得:getSheetByName()

const SHEET_URL = "";
const SHEET_NAME = "";
var spreadSheet = SpreadsheetApp.openByUrl(SHEET_URL);
var sheet = spreadSheet.getSheetByName(SHEET_NAME);

配列として取得:getSheets()

getSheets()メソッドを使うとsheetオブジェクトの配列が取得できます。

var sheet = spreadSheet.getSheets()[1];

アクティブなシートを取得:getActiveSheet()

そのSpreadsheetを開いたら最初に表示されるシートを取得します。

(おそらく1番目のシートのことなのでgetSheets()[0]と同じ結果になるはず)

var sheet = spreadSheet.getActiveSheet();

参考

セルの範囲を指定

値が入っている全範囲を取得:getDataRange()

var table = sheet.getDataRange();

指定範囲を取得:getRange()

いろんな書き方ができます。

  • getRange(row, column)
  • getRange(row, column, numRows)
  • getRange(row, column, numRows, numColumns)
  • getRange(a1Notation)
var cell = sheet.getRange("A1");
var table = sheet.getRange(1, 1, 2, 2);

参考

値の読み込み・書き込み

値の読み込み:getValue(s)()

  • getValue():Rangeのうち1つ目のセルの値を取得します。
var cell = sheet.getRange("A1").getValue();
  • getValues() :Rangeのすべての値を2次元配列として取得します。
var table = sheet.getRange(1, 1, 3, 2).getValues();

値の書き込みsetValue(s)()

  • getValue(s)()と同様
sheet.getRange(4, 1, 2, 3).setValues([[4, "Apple", 120],
                                      [5, "Orange", 200]]);

行の追加:appendRow()

  • appendRow:1行分のデータ(リスト)をシート末尾に追加
  • ※これはRangeクラスのメソッドではなくSheetクラスのメソッド
sheet.appendRow([6, "Grape", 130]);

参考

46
54
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
54