Google Spreadsheetに外からhttpでURLを叩いてデータを保存する

Google Spreadsheetには外からhttpでURL を叩くことで簡単にデータを保存することが出来る。つまりRaspberry Piで取得したセンサーデータをGoogle Spreadsheetに保存するようなことが簡単に出来る。

基本的なやり方

1. Google Spreadsheetのスクリプトエディタにdo_get()関数を作りそこでhttpでgetが実行されたときのパラメータをシートに保存する処理を書く。
2. コードをウェブアプリとしてデプロイして生成されたURLに対してdo_get()関数にわたすデータをパラメータとして指定してhttpで叩く。

手順

空のスプレッドシートを作成してから以下の手順に従ってやれば多分出来る。

画像1

スクリプトエディタを開く

画像2

function doGet(e) {
 var sheet = SpreadsheetApp.getActiveSheet();
 sheet.appendRow([new Date(), e.parameter.value1, e.parameter.value2]);
}

上記の赤枠のコードを入力し「保存」する。

画像3

デプロイから「新しいデプロイ」を選ぶ。

画像4

「種類の選択」で「ウェブアプリ」を選ぶ。

画像5

上記の通り設定して「デプロイ」する。

画像6

アクセスを承認する。

画像7

googleの自分のアカウントを選択する。

画像8

「詳細」を押す。

画像9

「無題のプロジェクト(安全ではないページ)に移動」を押す。

画像10

「許可」を押す。

画像11

URLをコピーする。

https://script.google.com/macros/s/AKfycxxxxxxxxxxxxxxxxxxxxxxxxxxxALA/exec

上記のURLのexecの後ろに以下を追加してブラウザから開く。

?value1=ABC&value2=DEF

つまり

https://script.google.com/macros/s/AKfycxxxxxxxxxxxxxxxxxxxxxxxxxxxALA/exec?value1=ABC&value2=DEF

としてcurlやPythonから叩く。

import requests

value1='ABC'
value2='DEF'
SPREADSHEET_URL='https://script.google.com/macros/s/xxxxx/exec'

requests.get(SPREADSHEET_URL+f'?value1={value1}&value2={value2}')


画像13

上記のようにvalue1とvalue2で指定した値がスプレッドシートに入力される。

ソースコードを修正した場合について

画像12

なお、ソースコードを変更して実行する場合は「新しいデプロイ」をする必要がある。その際に、上記のURLが変更になる場合があるのでURLを確認する必要がある。変化しているのに気が付かないでいるとソースコードを変更したのに動作がおかしいということになる。

注意事項

当然のことながら上記で発行したURLは誰でも叩くことが出来るので自分以外の人には知られないように注意すること。


この記事が気に入ったらサポートをしてみませんか?