memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

GASでCSVファイルをダウンロードするスクリプトが動作しなくなった(Google Chrome 83)

一ヶ月ほど前に、ボランティアで学内向けのツールを作ったんですが、昨日、「CSVファイルがダウンロードできません」という報告がありました。

memorandums.hatenablog.com

実行してみると、コンソールに以下のメッセージが表示されていました。

Download is disallowed. The frame initiating or instantiating the download is sandboxed, but the flag ‘allow-downloads’ is not set. See https://www.chromestatus.com/feature/5706745674465280 for more details.

うーん。わからん。とりあえずこのメッセージでググってみました。そこで見つかったのが以下の書き込み。

stackoverflow.com

Google Chromeがバージョンアップしたことがまず要因であることがわかりました。

その改修の中で、上のワーニングメッセージにあるリンクに書かれているように、iframeタグを使用して読み込まれたスクリプトでダウンロードが使用不可となったようで、それを許可するには、‘allow-downloads’ってやつをセットせい、と書かれているようです。

自分ではiframeというタグを書いた記憶がないのと、そもそもiframeは昔々に使った程度で今も使われているんだ!という驚きもあったりでした。そのくらいの知識しかなかったということです。

確かに、GASで生成したHTMLソースにiframeタグが挿入されています。GASを実行しhtmlファイルを詠み込む処理をしていますので、そのときに実行しているのかなぁ。。。理解が乏しい状況です。

<iframe id="sandboxFrame" allow="accelerometer *; ambient-light-sensor *; autoplay *; camera *; encrypted-media *; fullscreen *; geolocation *; gyroscope *; magnetometer *; microphone *; midi *; payment *; picture-in-picture *; speaker *; usb *; vibrate *; vr *" sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation">
</iframe>

恐らく、Google Chromeのコンソールに表示されたメッセージを解釈すると、この(↑)iframeタグの属性に「allow-downloads」を含まれる操作ができればいいんでしょうね。GASで。その方法をGoogleが作ってくれることを祈りますが。。。

issue trackerにも追加されているようです。ウォッチしていくしかないですかね。。。これが売り物だったら。。。ちょっと青くなりますね。。。GASは便利だけど、Google次第ってところがありますから。。。

https://issuetracker.google.com/issues/157368720