Closed6

カジュアル(?)な開発案件なのでDBを使いたくなくてGoogle Spread Sheetを代用したいと思ったのだけどこれはこれでGCPを使わなきゃいけなさそうでめんどくさそう。良い方法はないものか。

mcre (FUJITA Shinya)mcre (FUJITA Shinya)

やりたいこと詳細

  • 担当者(非開発者)がスプレッドシートを編集できる
  • Lambda(コンテナ型)でシートを参照し、Chromium + Seleniumで諸々処理する
  • スプレッドシートをLambdaが編集できる必要はない
  • 「URLを知っている人は誰でもアクセスできる」設定で問題ないはず
  • 必ずしもスプレッドシートである必要もない。シートのほうがいいけどテキスト(CSV)でも許容
mcre (FUJITA Shinya)mcre (FUJITA Shinya)

アイディア

  • GASを使用してなにかできないか?
    • CSVを公開できるやつとか
  • 誰でもアクセスできるテキストを(ユーザが)編集できるサービスとかないかな
  • そもそも「URLを知っている人は誰でもアクセスできる」スプレッドシートならGAS不要だったりする?
mcre (FUJITA Shinya)mcre (FUJITA Shinya)

アイディア

  • Seleniumを使っているのだからSeleniumで公開済みのシートにアクセス後、CSVをダウンロードする操作をすればよいのでは。(それも結構面倒だけど・・・)
mcre (FUJITA Shinya)mcre (FUJITA Shinya)

公開済みのシートでダウンロード操作をするときに、Chromeの検証機能でアクセス先を確認したところ、下記のようなURLにアクセスすればCSVを取得できることがわかった。

https://docs.google.com/spreadsheets/d/{スプレッドシートのID}/export?format=csv
mcre (FUJITA Shinya)mcre (FUJITA Shinya)

補足

デフォルトのシート以外をダウンロードしたい場合はgidを指定する

https://docs.google.com/spreadsheets/d/{スプレッドシートのID}/export?format=csv&gid={シートのID}
mcre (FUJITA Shinya)mcre (FUJITA Shinya)

pythonでデータ取得を確認するためのサンプル

import requests

id = 'XXXXXXXXXX'
result = requests.get(f'https://docs.google.com/spreadsheets/d/{id}/export?format=csv')
result.encoding = result.apparent_encoding
print(result.text)
このスクラップは2022/12/27にクローズされました