【GAS】スプレッドシートに書き込みを行う方法【一括・一行追加】

GASを使用してスプレッドシートに書き込みがしたい・・・。

そんな時に便利なGASの関数をご紹介いたします。

目次

スプレッドシートのシートと範囲の指定

スプレッドシートの書き込みについて記述する前に

  • スプレッドシート本体のID
  • シートのIDや名前
  • セルの範囲

などについて指定する必要があります。

追加するスプレッドシート・シートの指定 – SpreadsheetApp

公式ドキュメント

Class SpreadsheetApp  |  Apps Script  |  Google Developers

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app

まずはSpreadsheetAppクラスを使用してシート自体を定義します。

const sheet_id = 'xxxxxxxxxxxxxxxx'
const sheet_name = 'シート1'

const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);
  • openById(sheet_id)
  • getSheetByName(sheet_name)

sheet_idには、スプレッドシートを開くと表示されるURLの一部をIDとしてコピーします。

https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit#gid=0

上記のxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの部分です。

openById()の他にもURLを直接指定できるopenByUrl()もあるのでお好みでご使用ください。

sheet_nameにはシート名を指定します。初期値でシート1になっているのでそのまま使用しています。

範囲の指定 – sheet.getRange()

シートの指定が出来たら、次は範囲指定を行います。範囲の指定方法は2種類あり

  1. A3,B4 などの文字列で指定
  2. 1,2,4,3 など数値で指定

する方法です。sheet.getRange()を用います。

// パターン1
const range = sheet.getRange('A1','C6')

// パターン2
const range = sheet.getRange(1,1,3,6)

どちらも同じようにできますが、個人的には数値指定が好みです。

スプレッドシートへ追加

シートと範囲指定ができたので、次は実際にスプレッドシートに記入してみましょう!

シートへの記入方法も2種類あります。

  1. 配列を作成し、一括で追加する – range.setValues()
  2. 一行ずつ追加する – sheet.appendRow()

大量のデータをまとめて追加する場合にはsetValues()、時間経過で徐々に行を追加したい場合にはappendRow()を使用するイメージですね。

多量のデータをappendRow()で追加していくと、一件一件処理していくので非常に遅くなります!

一括追加 – range.setValues()

setValues()では、指定した範囲にまとめて値を追加する関数です。

下記のような配列を渡します。

const addArray = [
    ['a', 'b', 'c'],
    ['d', 'e', 'f']
  ]

これらの値はシートのセルに対応しており、追加されるようになります。

範囲と追加する行列を揃えないとエラーが発生します!

実際に試してみましょう!シートIDはご自身の環境のものに変更願います。

const sheetAdd = () => {
  const sheet_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  const sheet_name = 'シート1'

  const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);
  const range = sheet.getRange(1,1,2,3)

  const addArray = [
    ['a', 'b', 'c'],
    ['d', 'e', 'f']
  ]

  range.setValues(addArray)

}

確認してみると・・・

上記のように渡した配列が記入されていますね!

一行追加 – appendRow()

一行追加のappendRow()は簡単です!

指定したシートに対して配列を渡すだけです!

const sheetAdd = () => {
  const sheet_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
  const sheet_name = 'シート1'

  const sheet = SpreadsheetApp.openById(sheet_id).getSheetByName(sheet_name);

  const addArray = ['あ', 'い', 'う']

  sheet.appendRow(addArray)

}

同様に確認してみましょう!

最終行に追加されています!

まとめ

ご紹介した機能を使用すれば

  • 定期的にWebAPIからデータを取得してスプレッドシートへ書き込み更新

など便利ですね!

おすすめのUdemy学習動画

ビジネスパーソンに贈る業務効率化大全 〜Google Apps Scriptによる業務の自動化〜

おすすめ学習書籍

¥2,860 (2022/02/12 18:36時点 | Amazon調べ)
\楽天ポイント5倍セール!/
楽天市場
\楽天ポイント5倍セール!/
楽天市場
\楽天ポイント5倍セール!/
楽天市場

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメント一覧 (1件)

コメントする

目次
閉じる