次のような修正は如何でしょうか。
From
javascript
1var fileBlob = zipFile.next().getBlob.setContentType("application/zip");
To
javascript
1var fileBlob = zipFile.next().getBlob().setContentType("application/zip");
- 今の場合、
getBlob()
はClass Fileのメソッドですので、実行するために括弧を使ってください。
- また、ファイル名に
.zip
の拡張子があるようですと、setContentType("application/zip")
の代わりに、setContentTypeFromExtension()
を使うことも可能です。
参考
追記1
誤記とのことで、気付かず申し訳ありませんでした。
次に問題になるのは、ファイルサイズです。Google Apps Scriptで扱うことのできるファイルサイズの最大サイズは50 MB(52,428,800 bytes)です。これについては如何でしょうか。
追記2
コメントありがとうございます。状況を理解することができました。こちらではLinuxとGoogle Apps Scriptで同様のテスト(圧縮元のファイル名に全角文字列を使用する)を行っていましたが、その際はエラーは発生しませんでしたので特に問題では無いのではと考えてしまいました。windowsでテストをすると、同様のエラー(サーバーエラーが発生しました。しばらくしてからもう一度試してください。)が発生することを確認できました。anakama様のテスト環境はwindowsでしたでしょうか。
おそらく問題の原因は、windowsではsjisが使われているのに対してLinuxやGoogle Apps Scriptではutf8が使われていることによると思われます。
結論といたしまして、Google Apps Scriptを使ってzip圧縮された元ファイル(CSVファイル)のファイル名を変更しようとすると、必ず一度解凍する必要がありますので、残念ながら、今の状況ではUtilities.unzip()
でエラーが発生するため、解決できません。そこで、次のような回避策を提案させていただきます。ご質問の状況に合わせて説明させていただきます。
-
zipで圧縮する際にCSVファイルのファイル名をutf8に変換する。
-
CSVファイルのファイル名を一度、半角アルファベットや数字などに変換してzip圧縮し、Google Apps Script上でzipファイルから解答する際にCSVファイルのファイル名を元のファイル名に戻す。