スプレッドシートをPDFに変換するLoopでエラーコード429が発生

3,373 views
Skip to first unread message

UltraKatan

unread,
May 23, 2018, 1:11:50 AM5/23/18
to Google Apps API Japan
スプレッドシートでAとBのシートがあります。
シートAには取引先のリストが、
シートBには請求書の書式が設定されており、シートBに取引先コードを入力することで、シートAの取引先情報をVLOOKUP関数で取得するように設定しています。

上記の処理をシートAのリストを上からLoopで回した際に、
大体5件目か6件目でコード429のエラーが発生し、スクリプトが停止いたします。

次のLoopに移る際にUtilities.sleepにて処理を遅延させると、
エラーが発生する件数がどんどん伸びていきます。

このことから、スクリプト内に何か問題があるというよりも、
何かしらの制限に引っかかっているのではないかと考えております。

具体的になんの制限に引っかかっているのかを調査するにはどうすればよろしいでしょうか。
また、このような形で思い当たる原因はありますでしょうか。

なかひこ

unread,
May 25, 2018, 4:32:48 AM5/25/18
to Google Apps API Japan

429のエラーというのは,たしか一定期間内に大量のHTTP(S)リクエストをした際に返されるエラーコードです.
PDFにする処理がHTTP(S)の通信を必要とする処理なんだと思います.

このやり取りを見るに,sleepを長い時間行うようにすることが今のところの解決策だと思います.

ただ,Google Apps Script自体が長い時間実行できないので,そこらへんは調節をする必要があると思います.

具体的な解決策が提示できなく,申し訳ありません.

これで解決できないようでしたら,ソースコードやエラーのスクショを掲示していただければ,具体的な解決策が考えられるかと思います.


2018年5月23日水曜日 14時11分50秒 UTC+9 UltraKatan:

郡司裕之

unread,
May 25, 2018, 6:41:03 AM5/25/18
to google-app...@googlegroups.com
urlfetchで PDFを連続生成してると思いますが、あれは連続で行うと制限に引っかかります。

ですが非同期で実行されるので、utilities.sleepがスルーされます

ですので、例えば、何らかのフラグと組み合わせて、trueになったら実行するといった仕組みを入れると良いですよ。


自分も組み込んでます。

2018年5月23日(水) 14:11 UltraKatan <kazuto...@gmail.com>:
--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-...@googlegroups.com にメールを送信してください。
このグループに投稿するには google-app...@googlegroups.com にメールを送信してください。
https://groups.google.com/group/google-apps-api-japan からこのグループにアクセスしてください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/google-apps-api-japan/ae15edf6-4e3e-47da-a264-07c293ab3d55%40googlegroups.com にアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

UltraKatan

unread,
May 27, 2018, 10:44:25 PM5/27/18
to Google Apps API Japan
hiroさんご回答ありがとうございます。

>urlfetchで PDFを連続生成してると思いますが、あれは連続で行うと制限に引っかかります。
やはりそうだったのですね。

>ですので、例えば、何らかのフラグと組み合わせて、trueになったら実行するといった仕組みを入れると良いですよ。
何がtrueになった時に実行するべきかご教示いただけますでしょうか。




2018年5月25日金曜日 19時41分03秒 UTC+9 hiro:
urlfetchで PDFを連続生成してると思いますが、あれは連続で行うと制限に引っかかります。

ですが非同期で実行されるので、utilities.sleepがスルーされます

ですので、例えば、何らかのフラグと組み合わせて、trueになったら実行するといった仕組みを入れると良いですよ。


自分も組み込んでます。

2018年5月23日(水) 14:11 UltraKatan <kazuto...@gmail.com>:
スプレッドシートでAとBのシートがあります。
シートAには取引先のリストが、
シートBには請求書の書式が設定されており、シートBに取引先コードを入力することで、シートAの取引先情報をVLOOKUP関数で取得するように設定しています。

上記の処理をシートAのリストを上からLoopで回した際に、
大体5件目か6件目でコード429のエラーが発生し、スクリプトが停止いたします。

次のLoopに移る際にUtilities.sleepにて処理を遅延させると、
エラーが発生する件数がどんどん伸びていきます。

このことから、スクリプト内に何か問題があるというよりも、
何かしらの制限に引っかかっているのではないかと考えております。

具体的になんの制限に引っかかっているのかを調査するにはどうすればよろしいでしょうか。
また、このような形で思い当たる原因はありますでしょうか。

--
このメールは Google グループのグループ「Google Apps API Japan」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには google-apps-api-japan+unsub...@googlegroups.com にメールを送信してください。
Reply all
Reply to author
Forward
0 new messages