Ⅱ. やり方
1. Google Developers Consoleにアクセスする
2. 新しいプロジェクトを作成する
3. ライブラリを選択する
5. 認証情報をクリックする
6. OAuth クライアント IDを作成する
7. 「デスクトップアプリ」を選択し、任意の名前をつける
8. 「クライアントID」と「クライアントシークレット」をメモする
9. サンプルプログラムを書く
var fetch = require('node-fetch'); const clientId = 'xxx-yyy.apps.googleusercontent.com' const clientSecret = 'xxx' const redirectUri = 'urn:ietf:wg:oauth:2.0:oob' const scope = 'https://www.googleapis.com/auth/spreadsheets' async function getRefreshTokenFromCode (code) { const res = await fetch('https://www.googleapis.com/oauth2/v4/token', { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: clientId, client_secret: clientSecret, code: code, redirect_uri: redirectUri, grant_type: 'authorization_code', access_type: 'offline' }) }) const obj = await res.json() return obj.refresh_token } async function getAccessTokenFromRefreshToken (refreshToken) { const res = await fetch('https://www.googleapis.com/oauth2/v4/token', { method: 'post', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ client_id: clientId, client_secret: clientSecret, grant_type: 'refresh_token', refresh_token: refreshToken }) }) const obj = await res.json() return obj.access_token } async function writeSingleCell (accessToken, sheetId, sheetName, cell, value) { const url = `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/values/'${sheetName}'!${cell}?valueInputOption=USER_ENTERED` const res = await fetch(encodeURI(url), { method: 'put', headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ majorDimension: 'COLUMNS', values: [ [ value ] ] }) }) const obj = await res.text() return obj } (async () => { let url = `https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=${clientId}&redirect_uri=${redirectUri}&access_type=offline&scope=${scope}` // 表示されたURLにアクセスして手動でコードを取得する console.log(url) // codeは1回のみ使用可能 // const code = '4/1A...' // const refreshToken = await getRefreshTokenFromCode(code) // console.log(refreshToken) // refreshTokenをメモする事。 // 2回目以降はrefreshTokenを利用してaccessTokenを生成する事が出来る // const refreshToken = '1//...' const accessToken = await getAccessTokenFromRefreshToken(refreshToken) console.log(accessToken) const sheetId = 'xxx' await writeSingleCell(accessToken, sheetId, 'シート1', 'A1', 100) })()
実行結果
A1に100が書き込まれた