GASでPDF作成時にエラーが出る
Q&A
Closed
解決したいこと
GASでスプレッドシートからPDFを作成するスクリプトを作成しています。
基本的には正しくPDFが出力できているのですが、
出力させる行数が一定以上を超えるとエラーが発生してしまいます。
発生している問題・エラー
GASの画面上でエラーは表示されないのですが、出力されたPDFがGoogleドライブ上でGoogleドキュメントとして認識され、こちらのテキストが表示されてしまいます。
Google ドキュメント内でエラーが発生しました。このページを再読み込みするか、数分後にこのページをもう一度開いてみてください。
Google ドキュメント エディタの詳細については、ヘルプセンターをご参照ください。
ご不便をおかけして申し訳ございません。
- Google Docs チーム
該当するソースコード
引数に設定しているrowが35あたりを超えると出力に失敗してしまうようです。
function createPdf(newfolder, ssId, sheetId, fileName, row){
// スプレッドシートをPDF出力するためのURL
const url = 'https://docs.google.com/spreadsheets/d/' + ssId + '/export?'
// PDF出力のオプションを設定
const options = 'exportFormat=pdf&format=pdf'
+ '&gid=' + sheetId //PDFにするシートの「シートID」
+ '&portrait=true' //true(縦) or false(横)
+ '&size=A4' //印刷サイズ
+ '&fitw=true' //true(幅を用紙に合わせる) or false(原寸大)
+ '&gridlines=false' //グリッドラインの表示有無
+ '&range=A1%3AH'+row //セル範囲を指定
const requestUrl = url + options;
//API使用のためのOAuth認証
const token = ScriptApp.getOAuthToken();
const params = {
'headers' : {'Authorization':'Bearer ' + token},
'muteHttpExceptions' : true
};
const response = UrlFetchApp.fetch(requestUrl, params);
//Blobオブジェクトを作成
const blob = response.getBlob();
blob.setName(fileName + '.pdf'); //PDFファイル名を設定
//指定のフォルダにPDFファイルを作成
newfolder.createFile(blob);
}
追記
PDF出力させるシートのデータを変えて試したところ、データによっては出力最大行数を35行以上に変更しても出力に成功することがわかりました。
出力に失敗するデータの特徴として、セル内の文字数が多く複数行に渡って文字が記載されているセルが多いことが挙げられるかと思います。確信はありませんが、現時点では改ページ設定が原因なのかと推測しております。