質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Q&A

解決済

1回答

4686閲覧

GAS スプレットシートからのPDFの出力(連続)

tamura1020231

総合スコア6

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google ドライブ

Google ドライブは、Google社が提供するオンラインストレージサービス。オンラインストレージ上に、画像や動画、テキスト、Word/PDFのファイルなどさまざまなファイル保存することができます。また、他のユーザーと共有することも可能です。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

0グッド

0クリップ

投稿2020/12/29 11:15

編集2020/12/29 12:51

前提・実現したいこと

スプレットシート内で所定のフォーマットに必要な情報を入力し、PDFとして出力する作業を50回ほど繰り返しで行いたいです。

発生している問題・エラーメッセージ

 下記コードを50回ほど繰り返す仕様になっているのですが、6~8回繰り返したあたりで、出力データがPDFでなくテキストデータで出力されてしまいます。

なお、テキストデータに下記のメッセージが記載されております。

「ファイルへのリクエストが集中しています。混雑が解消されるまでお待ちください。再試行」

該当のソースコード

var token = ScriptApp.getOAuthToken(); var params = {  'headers' : {'Authorization':'Bearer ' + token},  'muteHttpExceptions' : true };

   var url="https://docs.google.com/spreadsheets/d/"+ssid+"/export?format=pdf&gid="+sheetid_1;
var url2="https://docs.google.com/spreadsheets/d/"+ssid+"/export?format=pdf&gid="+sheetid_2;
var response =UrlFetchApp.fetch(url,params);
var response2 =UrlFetchApp.fetch(url2,params);
var blob=response.getBlob().setName(serch_date1[i][2]+".pdf");
var blob2=response2.getBlob().setName(serch_date1[i][2]+"別紙.pdf");
folder.createFile(blob);
folder.createFile(blob2);
Utilities.sleep(10000);

試したこと

UrlFetchAppの制限かと思い、一時停止時間を増やしてみましたところ9回~12回の繰り返しあたりからテキストデータで出力されるようになりました。

補足情報(FW/ツールのバージョンなど)

イメージ説明
上記の通り、PDFとテキストデータが混在してしまいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一時停止時間を増やすことでテキストファイルになるまでの件数が増えたということは、(UrlFetchApp なのか Google ドキュメントかはわかりあませんが)時間あたりの件数や容量の制限に引っかかっているみたいですね。

テキストファイルの内容はどうなっているのでしょうか。エラーの内容(HTML)が出力されてたりしませんか?

対応としては処理間隔を開けるしかありませんが、1処理6分の制限があるので、十分な間隔をあけると50の処理は難しそうです。

Quotas for Google Services
https://developers.google.com/apps-script/guides/services/quotas

代わりにスプレッドシート等で管理したキューをトリガー(1分ごと)に処理するとか考えた方がいいかもしれません。

投稿2020/12/29 12:04

draq

総合スコア2577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamura1020231

2020/12/29 12:49 編集

ご回答ありがとうございます。 テキストファイルの拡張子を.htmlに変換しwebブラウザで表示すると、 「ファイルへのリクエストが集中しています。混雑が解消されるまでお待ちください。再試行」と記載されます。※テキストファイルのソースコード通りに表示されております。
draq

2020/12/29 22:12

アクセス過多が原因ならアクセス間隔を増やすして負荷を分散させるしかありませんが、回答にも記載したように50件処理するには6分以上かかると思われるので根本的な見直しが必要です。キューをスプレッドシート等で管理して時間トリガーで処理させるのも一案です。
tamura1020231

2020/12/30 02:39

ご連絡ありがとうございます。 ご提案いただいた内容を踏まえて、根本的に直してみます。 大変助かりました‼︎ ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問