【GAS】配列を使ってスプレッドシートにデータを書き込む方法
Gooogle Apps Script(GAS)で配列を使ってGoogle スプレッドシートにデータを書き込む方法を解説します。
スプレッドシートにデータを書き込む方法は複数ありますが、特に複雑な処理のGASスクリプトを書く時ほど、配列(Arrayオブジェクト)の操作が非常に重要です。
スプレッドシートに書き込む手順
GAS上で配列を使ってスプレッドシートにデータを書き込み方法は下記のステップで実行するのがおすすめです。
- スプレッドシートのデータをgetValuesメソッドで配列に格納
- 配列をアウトプットしたい形に処理
- 配列データをsetValuesを使ってスプレッドシートに書き出す
今回は、スプレッドに用意した下記の店舗別売上データをベースとして配列操作によるデータの書き込み方法を解説します。
スプレッドシートに配列を直接書き込む
appendRowメソッドによる行追加
Sheetオブジェクト.appendRow(<追加したい配列>)
まずは、もっとも簡単な処理方法を確認しましょう。
スプレッドシートに対して行レベルの書き込み処理を実行するappendRowメソッドで、引数の一次元配列を、シート最終行の次の行のデータとして追加できます。
メリットとしては、一回一回スプレッドシート上のデータを呼び出ししなくても「最終行の次の行にデータを書き込む」という処理を行ってくれるため、非常にシンプルな記述で完結させることができます。
デメリットは、1次元配列ずつしか追加ができないため、複数行追加をしたかったらその行数分処理を実行せねばならず、その分APIの実行回数が多くなってしまう点ですね。(2次元配列をappendRowメソッドで追加しようとすると、うまく反映されません)
//サンプルコード
const sheet = SpreadsheetApp.getActiveSheet();
// 追加用の一次元配列を用意
const shopE = [ 'E', 120394, 5 ] ;
const shopF = [ 'F', 543011, 24 ] ;
//最終行にデータを追加
sheet.appendRow(shopE);
sheet.appendRow(shopF);
無事、店舗データを追加できました。
appendRowメソッドのより詳しい活用は下記の記事をご覧ください。
配列要素を追加してから書き込む
上記の直接書き込む方法に対して、一度スプレッドシートからデータを読み込み、GASで配列を追加してから書き込む処理を行います。
pushメソッドで配列の最終要素へ追加
Arrayオブジェクト.push(<追加したい要素>)
pushメソッドを使うことで、スプレッドシートから読み込んだ配列に対して、最終要素としてデータを追加することができます。
一度読み込む処理や書き込む際に範囲を指定する手間はありますが、ループ処理する際や扱う行数が多くなった場合にはappendRowよりも有効でしょう。
function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getDataRange().getValues();
// 追加用の一次元配列
const shopE = [ 'E', 120394, 5 ] ;
const shopF = [ 'F', 543011, 24 ] ;
//配列の最終要素にデータに追加
values.push(shopE);
values.push(shopF);
//スプレッドシートに書き出し
//データ範囲の最終行と最終列を求める
const column = sheet.getDataRange().getLastColumn();
const row = values.length;
//書き出し
sheet.getRange(1, 1, row, column).setValues(values);
}
要素を下記のようにカンマで区切れば、pushメソッドで一度に2つ以上の要素を追加できます。
values.push(shopE,shopF);
直接書き込む手法と同じアウトプットになりました。
まとめ
GASで配列を使ってスプレッドシートにデータを書き込む方法について解説を行いました。
- appendRowメソッド:スプレッドシートに直接配列を追加
- pushメソッド:配列に要素を追加してからスプレッドシートに書き込む
高度な処理を実行するときほど、配列テクニックで実行時間や処理稼働の幅が大きく広がります。ぜひ習得してみてください。
配列に要素を追加する方法はpushメソッド以外にも複数あり、下記の記事で詳細を解説しているので、一緒に確認してみてください。