LoginSignup
0
1

More than 1 year has passed since last update.

【Google App Script】Googleスプレッドシートにデータを出力する方法

Posted at

GoogleAppScriptを使ってwebスクレイピングをした後、Googleスプレッドシートに書き込む、というケースはよくあります。
「よくあるケースだけど、すぐ忘れちゃう」というのはあるあるなので、この記事でまとめておきます。

操作対象のスプレッドシートを指定

ブックの指定には 「SpreadsheetApp.openById()」 、シートの指定には 「getSheetByName()」 または 「getSheets()」 を使います。
以下の例では、対象のブックとシートの情報が、変数「sheet1」と「sheet2」に格納されています。

function myFunction() {
  var id = "[スプレッドシートのid]"
  var ss = SpreadsheetApp.openById(id)
  var sheet1 = ss.getSheetByName("[スプレッドシートのシート名]")
  var sheet2 = ss.getSheets()[0]
}

「スプレッドシートのid」は、スプレッドシートを開いた時のURLのうち、以下の「xxxxxxx」の部分を指します。
 → https://docs.google.com/spreadsheets/d/xxxxxxx/edit#gid=0

シートの指定における2つのメソッドの使い分けは以下の通り。

getSheetByName()
シート名称で指定
getSheets()
シートの順序(そのシートが何番目のシートか)

特定のセルにデータを書き込み

先程指定したシートに対して、 「getRange().setValue()」 を使います。
A1セルに「テストデータ」という文字列を書き込む場合は、以下のようになります。

function myFunction() {
  var id = "[スプレッドシートのid]"
  var ss = SpreadsheetApp.openById(id)
  var sheet1 = ss.getSheetByName("[スプレッドシートのシート名]")
  var sheet2 = ss.getSheets()[0]
  sheet1.getRange("A1").setValue("テストデータ")
}

スプレッドシートの最終行に書き込み

スプレッドシートの内容から最終行を自動で判断して、書き込んでくれる便利な方法があります。
「appendRow()」 を使うと、自動で最終行にデータを書き込んでくれます。
さらに、配列形式でデータを渡すと、最終行に対して複数列のデータをまとめて出力できます。

function myFunction() {
  var id = "[スプレッドシートのid]"
  var ss = SpreadsheetApp.openById(id)
  var sheet1 = ss.getSheetByName("[スプレッドシートのシート名]")
  var sheet2 = ss.getSheets()[0]
  sheet1.appendRow(["テストデータ1", "テストデータ2"])
}

スプレッドシートの最終行の取得

先程のappendRow()だと、最終行の次の行に、データを続けて出力することしかできません。
「最終行の次に1行空けて、その次の行からデータ書き込みを開始したい」 のようなニーズを満たせませんね。
そんな時は、 「getLastRow()」 を使うと、スプレッドシートの最終行を取得できるので、それを使って細かい調整ができます。

function myFunction() {
  var id = "[スプレッドシートのid]"
  var ss = SpreadsheetApp.openById(id)
  var sheet1 = ss.getSheetByName("[スプレッドシートのシート名]")
  var sheet2 = ss.getSheets()[0]
  var lastRow = sheet1.getLastRow()  
  sheet1.getRange(lastRow+1, 1).setValue("テストデータ")
}

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1