きっかけ
スプレッドシートに雑にデータを溜め込んでいきたいと思って、スプレッドシートのデータ書き込み系 API を調べた。
データ書き込み API
スプレッドシート API にはデータを書き込む spreadsheets.values.append というメソッドがあります。
このメソッドでは、データを書き込む範囲 (range
) を指定する必要があります。
しかし、範囲といわれても困ります。目的はシート全体の空いてる箇所に順番に行を追加することだからです。
「範囲とかじゃなくて、空いてる行にデータを追加したいだけなのに!!」
insertRowsOption
で解決!
でも大丈夫、 この API には insertRowsOption
というオプションがあります。そこに INSERT_ROWS
を指定してあげれば、指定した範囲から下にたどっていき、空いているセルが見つかったらそこに書き込んでくれます。
よって、範囲は A1
とかで大丈夫です。 A1
は一番左上のセルですが、そこから下にデータのある行をどんどんスキップしてくれるので、結局一番下の空いている行に書き込んでくれます。
サンプルコード (Node.js)
Node.js でシートに一行追加するだけの簡単なサンプルを書きました。一番上の GIF 動画で実行しているものと同じです。
※実行には GOOGLE_APPLICATION_CREDENTIALS
環境変数が必要となります。→詳しくはこちら
const { google } = require('googleapis');
(async () => {
const auth = await google.auth.getClient({
scopes: ['https://www.googleapis.com/auth/spreadsheets']
});
const sheets = google.sheets({version: 'v4', auth});
const req = {
spreadsheetId: '<SPREADSHEET ID>',
range: 'A1',
valueInputOption: 'USER_ENTERED',
insertDataOption: 'INSERT_ROWS',
resource: {
values: [
['a', 'b', 'c'],
],
},
};
await sheets.spreadsheets.values.append(req);
})();