Excel/PDF出力のエラーとその対応方法

Excel/PDF出力で発生する主なエラーと、その対応方法を紹介します。

Excel生成要求は拒否されました。gusuku APIキーが正しいかどうか確認してください。

The Excel generation request was rejected. Confirm your Gusuku API key.

「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。

  • PDF生成要求は拒否されました。gusuku APIキーが正しいかどうか確認してください。
  • CSV生成要求は拒否されました。gusuku APIキーが正しいかどうか確認してください。

詳細

Excel/PDF出力を行うための認証が通過しなかった場合に起こるエラーです。

このエラーが出る原因のほとんどは、gusuku APIキーに正しくないものをセットしていることです。例えば、間違ってAPIキーのキー名称や作成者を入力してしまうと、このエラーが出ます。

対応方法

Customine カスタマイズで「Excelを出力する」「PDFを出力する」「CSVを出力する」をセットしているアクションの「gusuku APIキー」パラメーターを確認、修正し、「kintoneアプリへ登録」または「ジョブを生成」しなおしてください。

「gusuku APIキー」にセットするのは30桁の「APIキー」の方です。

テンプレートの取得時にエラーが発生しました。

Failed to retrieve template file.

詳細

Customine が kintone アプリからテンプレートファイルを取得することができなかった場合に発生します。

テンプレートファイルが取得できない原因で最も多いのはアクセス権限のエラーです。

このメッセージに続いて、kintone から報告されたエラー内容の詳細が表示されます。例えば、アクセス権限エラーの場合であれば以下のようなメッセージが追加されます。

[Kintone Error]
HTTP Status: 403
id: xxxxxxxxxxxxxxxxxxxxx
code: CB_NO02
message: 権限がありません。

対応方法

テンプレートファイルを保存している kintone アプリで、添付ファイルフィールドのアクセス権限を確認してください。

テンプレートファイルがxlsx形式ではありません。

The template file should be in xlsx format.

詳細

テンプレートファイルの拡張子が .xlsx ではなかった場合に発生します。

対応方法

kintone アプリの添付ファイルフィールドに添付されているテンプレートファイルの拡張子が .xlsx であることを確認してください。

.xls や .xlsm 形式には対応していません。

Excel/PDF出力のテンプレートにはExcelブック形式のファイルのみご使用いただけます。

Only Excel workbook format files can be used as templates.

詳細

テンプレートファイルが Excelブック形式でなかった場合に発生します。

以下のようなケースで発生します。

  • テンプレートファイルが壊れている。
  • Excelブック形式ではないファイルを無理やり拡張子 .xlsx に変更した。

対応方法

kintone アプリの添付ファイルフィールドに添付されているテンプレートファイルの拡張子が .xlsx で、かつ Excel で開けることを確認してください。

テンプレートファイルのサイズが大きすぎます。5MB以内にしてください。

The size of the template file is too large. Keep it within 5MB.

詳細

テンプレートファイルのサイズが大きすぎる場合に発生します。

対応方法

テンプレートファイルのサイズ上限は 5MB なので、それ以下に収めるようにしてください。

テンプレートに無駄なシートや行が含まれている場合は削除してください。

よく見られる例は、過去に業務で出力した Excel ファイルをテンプレートとして流用しようとしているケースです。この場合、過去の出力データが Excel ファイルに残っていて非常に大きなサイズになっている場合があります。確実にシートや行を削除するか、新規 Excel ファイルに必要な部分だけをコピーするなどしてサイズを小さくしてください。

データサイズが大きすぎるためExcel生成要求を出すことができませんでした。レコードの数を減らしてください。

Failed to request generating Excel because data is too large. Reduce the number of records.

「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。

  • データサイズが大きすぎるためPDF生成要求を出すことができませんでした。レコードの数を減らしてください。
  • データサイズが大きすぎるためCSV生成要求を出すことができませんでした。レコードの数を減らしてください。

詳細

kintoneアプリのカスタマイズで実行した際に、「データレコード」に大量のデータを含むレコードを渡すと発生します。データがおよそ 50MB を超えると起こります。

対応方法

「データレコード」に渡すレコードのサイズを小さくしてください。

レコード数を減らすのが最も効果的です。

レコード数を減らせない場合は、アプリの構成を見直してフィールド数を減らすことを検討してください。特にテーブルデータは大きくなりがちですが、代わりに関連レコードを用いることでデータサイズを減らすことができます。

レコードデータが大きすぎるためExcelの生成要求を行うことができませんでした。

「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。

  • レコードデータが大きすぎるためPDFの生成要求を行うことができませんでした。
  • レコードデータが大きすぎるためCSVの生成要求を行うことができませんでした。

詳細

Job Runnerで実行した際に、「データレコード」に大量のデータを含むレコードを渡すと発生します。どの程度のデータサイズで発生するのかは、他のカスタマイズも影響するので一概には言えませんが、およそ 80MB~90MB を超えると発生する可能性が高くなります。

対応方法

「データレコード」に渡すレコードのサイズを小さくしてください。

レコード数を減らすのが最も効果的です。

レコード数を減らせない場合は、アプリの構成を見直してフィールド数を減らすことを検討してください。特にテーブルデータは大きくなりがちですが、代わりに関連レコードを用いることでデータサイズを減らすことができます。

テンプレートの行数が多すぎます。全シート合計で1万行以内にしてください。

Template has too many rows. Keep the total number of all sheets within 10,000 rows.

詳細

テンプレートの全シートの最大行番号の合計が1万を超える場合に発生します。1シートでは超えていなくても合計で超えると発生するので注意してください。

対応方法

テンプレートを編集し、無駄な行を削除してください。

特に、何千~何万といった空行を持ったテンプレートは無駄なので、そのような空行は削除してください。$FOREACH~$END はデータ数に応じて自動的に行を増やしますので、テンプレートで事前に空の行を用意しておく必要はありません。

なお、Excel の見た目上でセルが空欄になっていてもデータ上は削除されていない場合がありますのでご注意ください。

行数がExcelの上限を超えています。

The number of rows exceeds the Excel limitation.

詳細

テンプレートを適用した結果、行番号がExcelの上限値(1048575)を超えた場合に発生します。

テンプレート自体の行数は少なくても、$FOREACH~$ENDで展開した行数が非常に多いと発生する可能性があります。

対応方法

「データレコード」の行数を減らしてください。

または、$FOREACH と $END の間の行が2行以上ある場合、この行を減らしてください。$FOREACH と $END が5行あれば、データレコード1行につき5行に展開されることになります。$FOREACH と $END の間の行を1行にすればデータレコード1行に対し展開される行も1行になりますので、全体の行も5分の1で済みます。

Too many cells (xxxx) in the sheet.

詳細

テンプレートのシート名の先頭に「#」を付けているケースで、元シートのセル数が1万を超えている場合に発生するエラーです。

シート名の先頭に「#」を付けている場合、各 kintone レコードについてそのシートをコピーする処理が行われます。このときコピー元のセル数が膨大だと負荷がかかりすぎてしまうためにこのような制限事項が設けられています。

対応方法

テンプレートを編集し、無駄なセルを削除してください。

特に、何千~何万といった空行を持ったテンプレートは無駄なので、そのような空行は削除してください。$FOREACH~$END はデータ数に応じて自動的に行を増やしますので、テンプレートで事前に空の行を用意しておく必要はありません。

なお、Excel の見た目上でセルが空欄になっていてもデータ上は削除されていない場合がありますのでご注意ください。

メモリが不足したためExcelを生成できませんでした。データサイズを見直してください。

Failed to generate Excel because of insufficient memory. Please review the data size.

「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。

  • メモリが不足したためPDFを生成できませんでした。データサイズを見直してください。
  • メモリが不足したためCSVを生成できませんでした。データサイズを見直してください。

詳細

gusuku のサーバーで Excel 生成処理を実行する際にサーバーのメモリを使い切った場合に生じます。

処理するデータが多すぎる場合に発生します。原因となるデータは様々なものが考えられますが、もっとも可能性が高いのは添付ファイルです。大量の添付ファイルや巨大なサイズの添付ファイルを読み込もうとすると発生する可能性が高くなります。

対応方法

添付ファイル画像を $IMG で表示しようとしている場合、kintone のレコードに添付されている画像のサイズをもっと小さくすることを検討してください。特に高解像度のカメラで撮影した写真等をそのまま添付すると非常に大きなサイズになっている可能性があります。

Failed to rename sheets: $(xxx): converted sheetname is empty.

詳細

テンプレートのシート名を「$(フィールドコード)」のようにフィールド値に応じた名前で出力するようにしている場合に、フィールド値が空だったり存在しなかったりすると発生します。

対応方法

フィールドの値が空になる可能性がある場合は、固定の文字列を前か後ろに置くとよいでしょう。下の例は、「担当_」という固定文字列と担当者名フィールドの値をつなげたものをシート名にします。担当者名が空の場合は「担当_」というシート名で出力されます。

$("担当_")$(担当者名)

Failed to calculate some formulas. Error evaluating cell Sheet1!A1… The function [XXXX] is not supported.

詳細

Excel テンプレート内に Customine で対応していない Excel 関数が使用されている場合に起こるエラーです。

テンプレート内のセルをレコードのデータで置き換えた後、そのデータを試算式セルにも反映させるために、全シートの再計算が行われます。再計算ではすべての Excel 関数をサポートしているわけではなく、一部の関数しかサポートされていません。対応外の関数を使用しているとこのエラーが起こります。

対応方法

エラーメッセージ中の [XXXX] の部分に関数名が表示されます。この関数を使用しないようにテンプレートを修正してください。

Customine が対応している関数のリストはこちらです。

Failed to calculate some formulas. The deleted sheet is referenced from the formula.

詳細

テンプレートのシート名の先頭に「#」を付けているケースで、別のシートから元の「#」付きのシートを計算式で参照している場合に発生します。

シート名の先頭に「#」を付けている場合、そのシートがレコード毎に複数出力されます。そして、元の「#」付きのシートは削除されます。更に、テンプレートのデータ置き換えが終わった後に、全シートの再計算が行われます。この再計算時に「#」付きシートを参照するような計算セルがあると、参照先のシートが既に削除されているためにこのエラーが発生します。

対応方法

テンプレートを修正し、「#」付きのシートを別のシートから参照しないようにします。

Failed to calculate some formulas. Parse error near char xxx ‘【’ in specified formula ‘xxxxxxx’.

詳細

テンプレートのシート名に【】を含むシートがあり、そのシートを別シートから参照する式がある場合に発生します。【】以外に①のような文字でも発生します。

Customine のExcel/PDF出力では、他シートを参照する式で【】など一部の全角文字を正しく認識できません。

対応方法

テンプレートを修正し、シート名に【】のようにエラーの原因になっている文字を含めないようにします。

END macro not found.

詳細

$FOREACH に対応する $END が見つからなかった場合に発生します。

対応方法

$FOREACH に対応する $END は、$FOREACH と同じ列上に置いてください。

FOREACH macro must have one or more content rows.

詳細

$FOREACH と $END の間にデータ用の行が1つもない場合に発生します。

対応方法

$FOREACH と $END の間にはデータ行を最低1行入れるように、テンプレートを修正してください。

Invalid $FOREACH. B10:C20 is overlapped with the $FOREACH.

詳細

テンプレートで $FOREACH~$END の範囲にまたがるような縦方向のセル結合がある場合に起こります。

対応方法

テンプレートを修正し、セル結合が $FOREACH~$END の内側に納まるようにしてください。

Excel table will be empty.

詳細

Excelのテーブル機能を使用していて、$FOREACH~$END展開の結果、Excelのテーブルにデータ行が1つもない状態になってしまう場合に、このエラーが出ます。

Excelのテーブル機能では、ヘッダ行と最低1行のデータ行が必要です。一方$FOREACH~$ENDでは、対象データが1つもない場合、$FOREACH~$ENDの行が単に削除されますので、データ行が1つもないテーブルができてしまう可能性があります。

対応方法

$FOREACHで展開するデータが1つもない可能性がある場合、Excelのテーブル機能を使用せずに通常の表としてテンプレートを作成してください。あるいは必ず1行以上のデータ行ができるように、テンプレートにダミー行を入れるのも手です。

‘()’ is not closed.

詳細

テンプレートの $(フィールドコード) 記法で、括弧が閉じていないものがあります。

対応方法

エラーメッセージの後ろに、シート名とセルが表示されますので、テンプレートの該当箇所を修正して正しく括弧が閉じるようにしてください。

Unrecognized macro: $xxx

詳細

テンプレートの $コマンド(フィールドコード) 記法で、認識できないコマンドが使用されている場合に発生します。

例えば $NUM(xxx) を $NUN(xxx) のようにタイプミスしたような場合にも起こります。

対応方法

エラーメッセージの後ろに、シート名とセルが表示されますので、テンプレートの該当箇所を確認、修正してください。タイプミスにご注意ください。

Too many $IF macro arguments.

詳細

テンプレートの $IFコマンドの記法に誤りがある場合に発生します。

対応方法

リファレンスマニュアルに記載されている $IF の仕様を参照して、正しい記法に修正してください。なお、$IF の記法はいくつかの種類がありますので、どの記法で記述したいのかも考慮してください。

The maximum length of cell contents (text) is 32767 characters

詳細

セルにセットするフィールド値の文字数が、Excel の上限値である 32767 を超えている場合に発生します。

対応方法

このような巨大なテキストデータが含まれる可能性があるフィールドは、Excel 出力対象から外すことを推奨します。

どうしてもそのフィールドを出力しなければならない場合は、スライスを用いて出力する行数を制限するなどして、セルにセットするテキストのサイズを小さくしてください。

関連記事