Cloud Functions https
#Google_Cloud_Functions
1. cloud functions https
そのままhttpを叩くのではなく、firebaseアプリから(SDK)からの起動もできる。
アプリから関数を呼び出す  |  Firebase
その場合、firebase authの認証情報を利用できるのが強み?
もちろん、https でもinvoke できる (req, res) の引数を取る
req.methodで、GET, POSTを見る
GETは、req.queryでクエリを取ればよい
POSTは、req.bodyで ???を取ればよい。
何かレクエストを受けて、レスポンスを返す形のものを作りたい場合はこちら??
Puppeteerを使いたい場合は、
pageオブジェクトをその中で動かせばよい。
Google Apps Scriptから Google Sheetsの値を呼んで、それを postのpayloadに入れて、投げればよさそう。
未実装だが、、
あとは、crawling固有の問題の対処。評価タイミングはawait page.evalueate(foo) すれば(多分)良い
cloud functions 認証に気をつける。付与することが必要
あと、悪意のあるアクセスを起動前に弾く方法は別途必要。起動後なら、この認証を使えばOK
Scraping
Google Apps Scriptで、動作させたい。
Cloud Functions with Puppeteer + Google Apps Script でスクレイピングサーバーをサクッと作る - Qiita
で解説されている。
大まかには、
cloud functionsでは、httpトリガーで関数を作って、
Google Apps Scriptの UrlFetchAppで、そのhttpを呼べば良い。
自分の用途としては、
PDFの加工。
google sheetや documentを使ったPDFの加工はやってるが、画像的なPDFを柔軟 or 簡単に加工できない。
pythonのPDFライブラリのが簡単そう。
cloud functionsは、nodejsのがemulatorもあって、ローカル開発しやすそうだけど。
既存のcron的な処理は、こっちにもってきたい。
Google Cloud Storageの活用も必要になる
raspberryPiで温度湿度 -> GCP IoTCore -> Google Cloud Pub/Sub > Google Cloud Functions -> BigQuery -> Google Apps Script
raspi上では、mqttプログラムで送信( Supervisorでdaemon化)
functionsから BigQueryの streaming insertでjsonをそのまま投げれて、schemaが合えば入れてくれる。
BigQueryの可視化は、google data studioだけど、分単位での可視化がないはずなので、使えない。