みやもとメモ

「Notion」「Google Apps Script」「ブログカスタマイズ」などについて書いていきます。

目次
目次

【GAS】スプレッドシートの指定範囲のセルに値を書き込む

この記事をシェアする

今回はGAS(Google Apps Script)に関して書いていきます。

以前もGASに関する記事を書いています(以下リンク)。

miya-moto-memo.hatenablog.com

上記の記事で、GASでNotionからデータ取得してスプレッドシートに値を書き込んでいます。
プログラムも載せていますが、プログラムの具体的な説明はしませんでした。

今回の記事で、「スプレッドシートに値を書き込む」部分を具体的に説明してみます。

それでは本題へ。

やりたいこと

記事の冒頭でも触れましたが、スプレッドシートの指定範囲のセルに一気に値を書き込みます。

指定範囲のセルに一気に書き込む

miya-moto-memo.hatenablog.com

上記の記事ではNotionから取得したデータをスプレッドシートに出力しています。
ただ今回の記事では、分かりやすいようにプログラム内でサンプルデータを作って、それをスプレッドシートに書き込みます。

プログラム事前準備

プログラムを実行する前に、いくつか事前準備が必要なので書いておきます。

スプレッドシートの準備

データを出力するスプレッドシートを用意します。

スプレッドシートの準備

スプレッドシートを作成したら、以下2つの操作をしておきます。

  • シート名を決める
  • ファイルIDを控えておく

シートの中身は初期状態のままで問題ないです。

スクリプト プロパティの設定

上記で触れているファイルIDはプログラムに直書きでなく、スクリプトプロパティに設定した方がベターかなと思います。
以下の記事で詳しく書いています。

miya-moto-memo.hatenablog.com

今回のプログラムでは、以下をスクリプトプロパティとして登録しています。

プロパティ 説明
SPREADSHEET_FILE_ID スプレッドシートのファイル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」になる

指定範囲のセルの値が全て「見出し1」になりました。
「setValues」と「setValue」の使い分け、お気を付けください。

おわりに

ということで、「GASでスプレッドシートの指定範囲のセルに値を書き込む」に関してアレコレ書いてみました。

今回は指定した範囲のセルに値を書き込むだけでしたが、書式を設定したり数式を設定したり、色々と出来そうです。

そういった記事もいずれ書いてみようかなと思います。

この記事が参考になれば幸いです。

関連記事

GAS(Google Apps Script)に関してはいくつか記事にしています。
気になる記事があればぜひ。

GASの活用事例


GASでNotionのデータをスプレッドシートに出力してグラフ化 - 派生記事

TOPへ戻る HOMEへ