酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

なにもしてないのに Googleスプレッドシート のCSVファイルがダウンロードできなくなった

Google Spreadsheetに記入した内容をデータソースにして、curlでダウンロードしてデータを加工する処理をたくさん作っています。11月18日(水)の午前中にGoogle SpreadsheetからCSVファイルのダウンロードができない現象が発生していることに気が付きました。

curlでダウンロードすると csvではなくGoogleアカウントのログインページがダウンロードされている 現象が発生していました。特になにかやったわけではなく仕様が変わったようです。

ある日突然 CSVファイルをダウンロードできなくなる

僕はGoogleスプレッドシートをデータソースにして様々なデータを作成しています。

一例として、1年前の記事で書いたように弊アプリのローカライズデータはみんなが弄れるように、スプレッドシート上でIDと文言を定義しておき、CSVファイルをダウンロード加工して、iOSアプリ向けの Localizable.strings と Androidアプリ向けの strings.xml へ変換しています。

ここ1年間、この仕組みで運用していました。OKやキャンセルなどの共通文言がスプレッドシート間のコピペで済むのでとても便利です。

11月18日に何故かこの仕組みが動かなくなってしまいました。

原因は公開設定ではなく「共有設定」にあった!

そこから5日間何が悪いのか悩んでいましたが、ようやく原因を特定することができました。

問題はGoogleスプレッドシートの公開設定ではなく共有設定にありました。11月18日(水)前後に共有範囲が「リンクを知っている全員」から「制限付き」に変わっていたのが原因でした。

f:id:ch3cooh393:20201123134236p:plain

Googleスプレッドシートの仕様変更があったのでしょうか。共有設定で「制限付き」と「リンクを知っている全員」が選択できるようになっていました。あまり記憶にないのですが変更前までは「リンクを知っている全員」のみで「制限付き」はなかったような気がします。

閲覧時にGoogleアカウントにログインしていないと、制限付きのドキュメントは参照できません。「リンクを知っている全員」に変更することで今まで通り curl を使ってGoogleスプレッドシートからCSVファイルがダウンロードできるようになりました。

ちゃんと調査する気になったキッカケ

macOS Big Surにアップデートした直後ということもあり、てっきり僕のPCのキャッシュがおかしくなって発生しているのかと考えていましたが、今日別の方のところでも同じ現象が発生しているっぽいことがわかりました。

色々と設定を変更して試したところ、前述の「共有設定」に気が付いたのでした。