今回はGAS(Google Apps Script)に関して書いていきます。
以前もGASに関する記事を書いています(以下リンク)。
上記の記事で、GASでNotionからデータ取得してスプレッドシートに値を書き込んでいます。
プログラムも載せていますが、プログラムの具体的な説明はしませんでした。
今回の記事で、「スプレッドシートに値を書き込む」部分を具体的に説明してみます。
それでは本題へ。
やりたいこと
記事の冒頭でも触れましたが、スプレッドシートの指定範囲のセルに一気に値を書き込みます。
上記の記事ではNotionから取得したデータをスプレッドシートに出力しています。
ただ今回の記事では、分かりやすいようにプログラム内でサンプルデータを作って、それをスプレッドシートに書き込みます。
プログラム事前準備
プログラムを実行する前に、いくつか事前準備が必要なので書いておきます。
スプレッドシートの準備
データを出力するスプレッドシートを用意します。
スプレッドシートを作成したら、以下2つの操作をしておきます。
- シート名を決める
- ファイルIDを控えておく
シートの中身は初期状態のままで問題ないです。
プログラム
準備が整ったところで、プログラムです。
※事前準備が完了している前提です。
// スプレッドシートのファイルID const SPREADSHEET_FILE_ID = PropertiesService.getScriptProperties().getProperty('SPREADSHEET_FILE_ID'); /** * メイン処理 */ function main() { // 1行目(見出し) const dataArray = [['見出し1','見出し2','見出し3','見出し4','見出し5']]; // 2行目以降(データ) dataArray.push(['データA2','データB2','データC2','データD2','データE2']); dataArray.push(['データA3','データB3','データC3','データD3','データE3']); dataArray.push(['データA4','データB4','データC4','データD4','データE4']); dataArray.push(['データA5','データB5','データC5','データD5','データE5']); dataArray.push(['データA6','データB6','データC6','データD6','データE6']); dataArray.push(['データA7','データB7','データC7','データD7','データE7']); dataArray.push(['データA8','データB8','データC8','データD8','データE8']); dataArray.push(['データA9','データB9','データC9','データD9','データE9']); dataArray.push(['データA10','データB10','データC10','データD10','データE10']); dataArray.push(['データA11','データB11','データC11','データD11','データE11']); // スプレッドシートを取得 const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_FILE_ID); // シートを取得 const sheet = spreadsheet.getSheetByName('データ'); // シートのデータをクリア sheet.clear(); // データをセットする(セル範囲を指定) const startRow = 1; const startColumn = 1; const numRows = dataArray.length; const numColumns = dataArray[0].length; sheet.getRange(startRow, startColumn, numRows, numColumns).setValues(dataArray); }
上記のプログラムを実行すると、スプレッドシートに値が書き込まれます。
2次元配列にデータを格納して、指定範囲のセルに一気に書き込んでいます。
「SpreadsheetApp」の詳細
「SpreadsheetApp」に関するリファレンスをいくつかリンクしておきます。
SpreadsheetApp
「SpreadsheetApp」で、スプレッドシートを色々と操作できます。
developers.google.com
SpreadsheetApp.openById
「SpreadsheetApp.openById」で、指定したファイルIDのスプレッドシートを取得できます。
developers.google.com
Spreadsheet.getSheetByName
「Spreadsheet.getSheetByName」で、指定したシート名のシートを取得できます。
developers.google.com
Sheet.clear
「Sheet.clear」で、シートの内容をクリアできます。
developers.google.com
クリア方法には何パターンかあるようです。
「Sheet.clearContents」は文字などの内容をクリア、「Sheet.clearFormats」は文字色・背景色などの書式をクリアします。
今回は「Sheet.clear」で内容も書式も、どちらもクリアしています。
Sheet.getRange
「Sheet.getRange」で、セル範囲を指定します。
developers.google.com
セルの指定方法も何パターンかあるようです。
行と列を指定して1セルだけ選択するパターンや、セル番地(A1、B2など)を指定するパターンなどです。
今回は複数のセルを選択しているパターンです。
以下のセルをまとめて選択しています。
1行目1列目(A1)を起点として、2次元配列のサイズに応じてセル範囲を決定しています。
// データをセットする(セル範囲を指定) const startRow = 1; const startColumn = 1; const numRows = dataArray.length; const numColumns = dataArray[0].length; sheet.getRange(startRow, startColumn, numRows, numColumns).setValues(dataArray);
Range.setValues
「Range.setValues」で、指定した範囲のセルに値を設定できます。
developers.google.com
今回は2次元配列を引数に渡しているため「Range.setValues」です。
「Range.setValue」が別であるので、用途に応じて使い分ける必要があります。
試しに「Range.setValue」に変更してプログラム実行してみたところ、
// データをセットする(セル範囲を指定) const startRow = 1; const startColumn = 1; const numRows = dataArray.length; const numColumns = dataArray[0].length; sheet.getRange(startRow, startColumn, numRows, numColumns).setValue(dataArray);
指定範囲のセルの値が全て「見出し1」になりました。
「setValues」と「setValue」の使い分け、お気を付けください。
おわりに
ということで、「GASでスプレッドシートの指定範囲のセルに値を書き込む」に関してアレコレ書いてみました。
今回は指定した範囲のセルに値を書き込むだけでしたが、書式を設定したり数式を設定したり、色々と出来そうです。
そういった記事もいずれ書いてみようかなと思います。
この記事が参考になれば幸いです。
関連記事
GAS(Google Apps Script)に関してはいくつか記事にしています。
気になる記事があればぜひ。
GASの活用事例
GASでNotionのデータをスプレッドシートに出力してグラフ化 - 派生記事