Googleスプレッドシートに書き込み処理(node.js)
はじめに
Googoleスプレッドシートにプログラミングで書くとしたら大抵Google Apps Scriptで書けばいいと思いますが今回はJavascript(node.js)の勉強とGoogleAPIを弄りたかったのでnode.jsで書き込み処理をしたいと思います。
開発環境
- Node.js v6.11.1
- GoogleAPI v4
API取得
Node.js Quickstart
Google公式のクイックスタートをしといてください。スプレッドシートとの連携はこれでいけます。
index.js
credentials.json
token.json
ファイルはこの3つです。クイックスタートをすれば3つのファイルができてスプレッドシート情報を取得できます。では文字を書き込みたいと思います。
文字書き込み処理
node.jsで文字の書き込みをするのに今回はappend
APIを使います。詳しくは公式を見てください。
Method: spreadsheets.values.append
文字を書き込むだけなら簡単です。サンプルコードのlistMajors関数の場所に
const sheets = google.sheets({
version: 'v4',
auth
});
sheets.spreadsheets.values.append({
spreadsheetId: 'スプレッドシートID',
range: 'シート名',
valueInputOption: 'RAW',
insertDataOption: 'INSERT_ROWS',
resource: {
values: [
["hello", "world"]
],
},
},(err, result) => {
if (err) return console.log(err);
console.log('%d cells updated.', result.totalUpdatedCells);
});
このコードを書けば出来ます。他のapiも公式のlistMajors関数と同じように書けばいけると思います。
1行ずつ書き込まれるはずです。文字の書き込みだけならこれでできます。
公式コードをわかりやすく
ここからは記事内容とは一切関係ない内容です。自分のメモ用に書いときます。クイックスタートのサンプルコードがとてもわかりづらくて、読みづらかったのでPromise構文
を使って、なるべくわかりやすくしました。Promise構文はあまり勉強していなかったので今回で相当勉強になりました。ついでにアロー関数式
も。初心者なので少し不安ですが多分あっています。間違っていたら報告してもらえると嬉しいです。実行自体はできます。
const fs = require('fs');
const readline = require('readline');
const { google } = require('googleapis');
const SCOPES = ['https://www.googleapis.com/auth/spreadsheets'];
const TOKEN_PATH = 'token.json';
Promise.resolve().then(() => {
return new Promise((resolve, reject) => {
fs.readFile('credentials.json', (err, content) => {
if (err) return console.log('Error loading client secret file:', err);
resolve(JSON.parse(content));
});
});
}).then((credentials) => {
return new Promise((resolve, reject) => {
const {
client_secret,
client_id,
redirect_uris
} = credentials.installed;
const oAuth2Client = new google.auth.OAuth2(
client_id, client_secret, redirect_uris[0]);
fs.readFile(TOKEN_PATH, (err, token) => {
if (err) return getNewToken(oAuth2Client, callback);
oAuth2Client.setCredentials(JSON.parse(token));
resolve(oAuth2Client);
});
});
}).then((auth) => {
return new Promise((resolve, reject) => {
const sheets = google.sheets({
version: 'v4',
auth
});
sheets.spreadsheets.values.append({
spreadsheetId: 'スプレッドシートID',
range: 'シート名',
valueInputOption: 'RAW',
insertDataOption: 'INSERT_ROWS',
resource: {
values: [
["Some value", "Another value"]
],
},
},(err, result) => {
if (err) return console.log(err);
console.log('%d cells updated.', result.totalUpdatedCells);
resolve(result);
});
});
});
最後に
今回は結構エラーが出て、簡単だと思った内容だったけど相当勉強になりました。今度はGASやPHPとかでも同じ処理をしてみたいです。調べているとGASは当たり前として、PythonやPHPなどの記事も多かったのです。
参考サイト
Author And Source
この問題について(Googleスプレッドシートに書き込み処理(node.js)), 我々は、より多くの情報をここで見つけました https://qiita.com/Lassieena/items/ba16b220d88bfd596b35著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .