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

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

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

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

3229閲覧

【GAS(PDF生成)】Exception: Request failed for https://docs.google.com returned code 500.

nomunomura

総合スコア7

Google スプレッドシート

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2021/10/12 01:29

前提・実現したいこと

コード変更しておらず、先日まで動作していたPDF生成のGASになりますが、
昨日から下記のエラーが出てしまい一度も完了まで至りません。
For文を取り除いて単発生成する命令式であればエラー出ず、PDF生成までしっかり完了されました。

エラーコード500についてググってみてもよく分からず・・・
下記エラーメッセージに表示されている「savePdfMultiple @ 【繰り返し】PDF生成.gs:73」は
「let blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf');」
の部分を指しています。

お手数をおかけしますがご確認よろしくお願い致します。

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

10:06:32 お知らせ 実行開始 10:06:33 エラー Exception: Request failed for https://docs.google.com returned code 500. Truncated server response: <!DOCTYPE html><html lang="ja"><head><meta name="description" content="ウェブ ワープロ、プレゼンテーション、スプレッドシート"><meta name="viewport" content="width=device-wid... (use muteHttpExceptions option to examine full response) savePdfMultiple @ 【繰り返し】PDF生成.gs:73

該当のソースコード

Google

1function savePdfMultiple(){ 2 //PDFの保存先(GDriveのフォルダID) 3 let folderId = "*********************************"; 4 5 //アクティブなスプレッドシートを取得 6 let ss = SpreadsheetApp.getActiveSpreadsheet(); 7 8 //スプレッドシートIDを取得 9 let ssId = ss.getId(); 10 11 //一斉送信用整形データシートから出展社数を取得 12 let companyList = ss.getSheetByName('PDF生成').getRange("K1").getValue(); 13 14 let eventName = ss.getSheetByName('PDF生成').getRange("I3").getValue(); 15 16 for(let i = 3; i <= companyList+2; i++){ 17 //PDF化するシートを取得 18 let sheet = ss.getSheets()[i]; 19 20 let sheetId = sheet.getSheetId(); 21 22 //最終行を取得 23 let lastRow = sheet.getRange("J1").getValue(); 24 25 //出展社名を取得 26 let corporateName = sheet.getRange("F3").getValue(); 27 28 //ブース番号を取得 29 let booth = sheet.getRange("E3").getValue(); 30 31 //ファイル名を定義 32 let fileName = "【面談者リスト】" + eventName + " - " + booth + " - " + corporateName + " 御中"; 33 34 //createPdf 35 let baseUrl = "https://docs.google.com/spreadsheets/d/" 36 + ssId 37 + "/export?gid=" 38 + sheetId; 39 40 //PDFのオプションを指定 41 let pdfOptions = "&exportFormat=pdf&format=pdf" 42 + "&size=A4" //用紙サイズ (A4) 43 + "&portrait=false" //用紙の向き true: 縦向き / false: 横向き 44 + "&fitw=true" //ページ幅を用紙にフィットさせるか true: フィットさせる / false: 原寸大 45 + "&top_margin=0.50" //上の余白 46 + "&right_margin=0.50" //右の余白 47 + "&bottom_margin=0.50" //下の余白 48 + "&left_margin=0.50" //左の余白 49 + "&horizontal_alignment=CENTER" //水平方向の位置 50 + "&vertical_alignment=TOP" //垂直方向の位置 51 + "&printtitle=false" //スプレッドシート名の表示有無 52 + "&sheetnames=false" //シート名の表示有無 53 + "&gridlines=false" //グリッドラインの表示有無 54 + "&fzr=false" //固定行の表示有無 55 + "&fzc=false" //固定列の表示有無 56 + "&range=A151%3AI"+lastRow; 57 58 //PDFを作成するためのURL 59 let url = baseUrl + pdfOptions; 60 61 //アクセストークンを取得する 62 let token = ScriptApp.getOAuthToken(); 63 64 //headersにアクセストークンを格納する 65 let options = { 66 headers: { 67 'Authorization': 'Bearer ' + token 68 } 69 }; 70 71 //PDFを作成する 72 // @ts-ignore 73 let blob = UrlFetchApp.fetch(url, options).getBlob().setName(fileName + '.pdf'); 74 75 //PDFの保存先フォルダー 76 //フォルダーIDは引数のfolderIdを使用します 77 let folder = DriveApp.getFolderById(folderId); 78 79 //PDFを指定したフォルダに保存する 80 folder.createFile(blob); 81 82 //sleep 83 Utilities.sleep(5000); 84 } 85} 86

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

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

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

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

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

3_April_2021

2021/10/13 02:22

この情報で原因に見当がつく人もいるかもしれませんし、それで解決できれば問題ありませんと思うのですが。メッセージと次のURLのmuteHttpExceptionsの説明を合わせて見ると、このパラメタを触れば、エラーに関連する情報を取得できそうに見えます、その方向での情報調査は行いましたか? https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchurl,-params
nomunomura

2021/10/13 07:42

情報不足、丸投げ自覚しております。。。申し訳ございません。 muteHttpExceptionsのことを認識しておらず、今試してみました。 PDF全ページ正常に出力されGoogleDriveに格納されました。 解決できたためベストアンサーとさせて頂きたいのですが、 追記・修正依頼で解決してしまっているため自己解決になってしまいます。 お手数でなければ解決方法を投稿していただければ、その後対応させて頂きます。 不要でしたらご返信もお気遣いなく、数日後に自己解決とさせて頂きます。 よろしくお願い申し上げます。
3_April_2021

2021/10/14 09:01

行為を非難するつもりはなかったので、誤解を招くような文章をお詫びします。回答に必要な情報収集と動作検証は、残念ながら報告前に終了しませんでした。自己解決に問題がなければ、自己解決をお願いします。
3_April_2021

2021/10/14 09:09

丸投げだとは思いませんが、質問ユーザの情報収集能力には研鑽の余地があると思いますので、この点は意識しておくといいと思います。私は質問で提示されたコードではSpreadsheetAppとトリガ関連のScriptAppを除いて知識や使用の経験がなく、500系のエラーも初めて見ました。その状態から情報収集をスタートしましたが、muteHttpExceptions:trueによって解決される可能性、500でこの対処が有効なときの原因に多かれ少なかれ言及していると思われる情報、それらの情報の正確性および本件との一致性を検証するために必要そうな処理、類似の問題で再び苦しまないために必要そうな処理などにあたりをつけるところまでは到達していました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問