Google Apps Script(以下、GAS)は、スプレッドシートやドキュメントなどのGoogleのサービスを操作することができるプログラミング言語です。GASを使うと、スプレッドシートに様々な機能を追加したり、自動化したりすることができます。しかし、スプレッドシートには既存のデータの下に新しい行を追加したい場合もあります。例えば、スプレッドシートに入力されたフォームの回答や、外部のAPIから取得したデータなどを追加したい場合です。そんなときに便利なのが、appendRowという関数です。この関数を使うと、スプレッドシートの最終行の次に新しい行を追加し、その行にデータを書き込むことができます。
- appendRow関数の基本的な使い方
- appendRow関数の引数の意味と使い分け
- appendRow関数の戻り値とその活用方法
appendRow関数の基本的な使い方
appendRow関数は、スプレッドシートに新しい行を追加するための関数です。新しい行に書き込むデータは、引数に一次元配列として渡します。例えば、[“A”, “B”, “C”]という配列を引数にすると、新しい行の1列目に”A”、2列目に”B”、3列目に”C”というデータが書き込まれます。
具体的な例として、スプレッドシートに以下のようなデータがあるとします。
店舗 | 売上 | 来客数 |
---|---|---|
A | 100000 | 50 |
B | 200000 | 100 |
C | 150000 | 80 |
このスプレッドシートに、[“D”, 120000, 60]というデータを追加するスクリプトは、以下のように書くことができます。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
let data = ["D", 120000, 60]; // 追加するデータの配列
sheet.appendRow(data); // 新しい行にデータを追加
このスクリプトを実行すると、スプレッドシートは以下のようになります。
店舗 | 売上 | 来客数 |
---|---|---|
A | 100000 | 50 |
B | 200000 | 100 |
C | 150000 | 80 |
D | 120000 | 60 |
appendRow関数の引数の意味と使い分け
appendRow関数は、引数によって新しい行に書き込むデータを変えることができます。引数には、以下の2種類があります。
- 一次元配列
- Rangeオブジェクト
一次元配列を引数にすると、その配列の要素を新しい行の各列に書き込みます。これは、前述の例で紹介した方法です。
Rangeオブジェクトを引数にすると、そのRangeオブジェクトが表す範囲のデータを新しい行に書き込みます。Rangeオブジェクトは、GASのSpreadsheetAppクラスやSheetクラスなどで取得できます。これは、スプレッドシート内の既存のデータをコピーして新しい行に追加したいときに便利です。
具体的な例として、スプレッドシートのA2:C2の範囲のデータを新しい行に追加するスクリプトを紹介します。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
let range = sheet.getRange("A2:C2"); // A2:C2の範囲のデータを取得
sheet.appendRow(range); // 新しい行にデータを追加
このスクリプトを実行すると、スプレッドシートは以下のようになります。
店舗 | 売上 | 来客数 |
---|---|---|
A | 100000 | 50 |
B | 200000 | 100 |
C | 150000 | 80 |
B | 200000 | 100 |
appendRow関数の戻り値とその活用方法
appendRow関数は、新しい行にデータを追加した後、自分自身を表すSheetオブジェクトを返します。これは、メソッドチェーンと呼ばれる、複数のメソッドを連続して呼び出すことができるようにするための仕組みです。メソッドチェーンを使うと、コードを簡潔に書くことができます。
例えば、スプレッドシートに新しい行を追加した後、その行の背景色を変えたいとします。通常であれば、以下のように書くことになります。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
let data = ["D", 120000, 60]; // 追加するデータの配列
sheet.appendRow(data); // 新しい行にデータを追加
let lastRow = sheet.getLastRow(); // 最終行の行番号を取得
let range = sheet.getRange(lastRow, 1, 1, 3); // 最終行の範囲を取得
range.setBackground("yellow"); // 背景色を黄色に変更
しかし、appendRow関数の戻り値を使うと、以下のように書くことができます。
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // アクティブなスプレッドシートを取得
let sheet = spreadsheet.getActiveSheet(); // アクティブなシートを取得
let data = ["D", 120000, 60]; // 追加するデータの配列
sheet.appendRow(data) // 新しい行にデータを追加し、Sheetオブジェクトを返す
.getRange(sheet.getLastRow(), 1, 1, 3) // 最終行の範囲を取得し、Rangeオブジェクトを返す
.setBackground("yellow"); // 背景色を黄色に変更
このように、メソッドチェーンを使うと、同じ処理をより短いコードで書くことができます。
まとめ
この記事では、Google Apps Scriptでスプレッドシートに新しい行を追加する方法について解説しました。appendRow関数を使うと、スプレッドシートの最終行の次に新しい行を追加し、その行にデータを書き込むことができます。引数には、一次元配列やRangeオブジェクトを渡すことができます。戻り値は、Sheetオブジェクトであり、メソッドチェーンを使ってコードを簡潔に書くことができます。
この記事が、Google Apps Scriptでスプレッドシートに新しい行を追加する方法を知りたい方の参考になれば幸いです。
参考文献
このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。
すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。