Excel/PDF出力で発生する主なエラーと、その対応方法を紹介します。
「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。
Excel/PDF出力を行うための認証が通過しなかった場合に起こるエラーです。
このエラーが出る原因のほとんどは、gusuku APIキーに正しくないものをセットしていることです。例えば、間違ってAPIキーのキー名称や作成者を入力してしまうと、このエラーが出ます。
Customine カスタマイズで「Excelを出力する」「PDFを出力する」「CSVを出力する」をセットしているアクションの「gusuku APIキー」パラメーターを確認、修正し、「kintoneアプリへ登録」または「ジョブを生成」しなおしてください。
「gusuku APIキー」にセットするのは30桁の「APIキー」の方です。
Customine が kintone アプリからテンプレートファイルを取得することができなかった場合に発生します。
テンプレートファイルが取得できない原因で最も多いのはアクセス権限のエラーです。
このメッセージに続いて、kintone から報告されたエラー内容の詳細が表示されます。例えば、アクセス権限エラーの場合であれば以下のようなメッセージが追加されます。
[Kintone Error]
HTTP Status: 403
id: xxxxxxxxxxxxxxxxxxxxx
code: CB_NO02
message: 権限がありません。
テンプレートファイルを保存している kintone アプリで、添付ファイルフィールドのアクセス権限を確認してください。
テンプレートファイルの拡張子が .xlsx ではなかった場合に発生します。
kintone アプリの添付ファイルフィールドに添付されているテンプレートファイルの拡張子が .xlsx であることを確認してください。
.xls や .xlsm 形式には対応していません。
テンプレートファイルが Excelブック形式でなかった場合に発生します。
以下のようなケースで発生します。
kintone アプリの添付ファイルフィールドに添付されているテンプレートファイルの拡張子が .xlsx で、かつ Excel で開けることを確認してください。
テンプレートファイルのサイズが大きすぎる場合に発生します。
テンプレートファイルのサイズ上限は 5MB なので、それ以下に収めるようにしてください。
テンプレートに無駄なシートや行が含まれている場合は削除してください。
よく見られる例は、過去に業務で出力した Excel ファイルをテンプレートとして流用しようとしているケースです。この場合、過去の出力データが Excel ファイルに残っていて非常に大きなサイズになっている場合があります。確実にシートや行を削除するか、新規 Excel ファイルに必要な部分だけをコピーするなどしてサイズを小さくしてください。
「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。
kintoneアプリのカスタマイズで実行した際に、「データレコード」に大量のデータを含むレコードを渡すと発生します。データがおよそ 50MB を超えると起こります。
「データレコード」に渡すレコードのサイズを小さくしてください。
レコード数を減らすのが最も効果的です。
レコード数を減らせない場合は、アプリの構成を見直してフィールド数を減らすことを検討してください。特にテーブルデータは大きくなりがちですが、代わりに関連レコードを用いることでデータサイズを減らすことができます。
「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。
Job Runnerで実行した際に、「データレコード」に大量のデータを含むレコードを渡すと発生します。どの程度のデータサイズで発生するのかは、他のカスタマイズも影響するので一概には言えませんが、およそ 80MB~90MB を超えると発生する可能性が高くなります。
「データレコード」に渡すレコードのサイズを小さくしてください。
レコード数を減らすのが最も効果的です。
レコード数を減らせない場合は、アプリの構成を見直してフィールド数を減らすことを検討してください。特にテーブルデータは大きくなりがちですが、代わりに関連レコードを用いることでデータサイズを減らすことができます。
テンプレートの全シートの最大行番号の合計が1万を超える場合に発生します。1シートでは超えていなくても合計で超えると発生するので注意してください。
テンプレートを編集し、無駄な行を削除してください。
特に、何千~何万といった空行を持ったテンプレートは無駄なので、そのような空行は削除してください。$FOREACH~$END はデータ数に応じて自動的に行を増やしますので、テンプレートで事前に空の行を用意しておく必要はありません。
なお、Excel の見た目上でセルが空欄になっていてもデータ上は削除されていない場合がありますのでご注意ください。
テンプレートを適用した結果、行番号がExcelの上限値(1048575)を超えた場合に発生します。
テンプレート自体の行数は少なくても、$FOREACH~$ENDで展開した行数が非常に多いと発生する可能性があります。
「データレコード」の行数を減らしてください。
または、$FOREACH と $END の間の行が2行以上ある場合、この行を減らしてください。$FOREACH と $END が5行あれば、データレコード1行につき5行に展開されることになります。$FOREACH と $END の間の行を1行にすればデータレコード1行に対し展開される行も1行になりますので、全体の行も5分の1で済みます。
テンプレートのシート名の先頭に「#」を付けているケースで、元シートのセル数が1万を超えている場合に発生するエラーです。
シート名の先頭に「#」を付けている場合、各 kintone レコードについてそのシートをコピーする処理が行われます。このときコピー元のセル数が膨大だと負荷がかかりすぎてしまうためにこのような制限事項が設けられています。
テンプレートを編集し、無駄なセルを削除してください。
特に、何千~何万といった空行を持ったテンプレートは無駄なので、そのような空行は削除してください。$FOREACH~$END はデータ数に応じて自動的に行を増やしますので、テンプレートで事前に空の行を用意しておく必要はありません。
なお、Excel の見た目上でセルが空欄になっていてもデータ上は削除されていない場合がありますのでご注意ください。
「Excelを出力する」と同様に、PDF/CSV出力の場合には、それぞれのエラーメッセージとなります。
gusuku のサーバーで Excel 生成処理を実行する際にサーバーのメモリを使い切った場合に生じます。
処理するデータが多すぎる場合に発生します。原因となるデータは様々なものが考えられますが、もっとも可能性が高いのは添付ファイルです。大量の添付ファイルや巨大なサイズの添付ファイルを読み込もうとすると発生する可能性が高くなります。
添付ファイル画像を $IMG で表示しようとしている場合、kintone のレコードに添付されている画像のサイズをもっと小さくすることを検討してください。特に高解像度のカメラで撮影した写真等をそのまま添付すると非常に大きなサイズになっている可能性があります。
テンプレートのシート名を「$(フィールドコード)」のようにフィールド値に応じた名前で出力するようにしている場合に、フィールド値が空だったり存在しなかったりすると発生します。
フィールドの値が空になる可能性がある場合は、固定の文字列を前か後ろに置くとよいでしょう。下の例は、「担当_」という固定文字列と担当者名フィールドの値をつなげたものをシート名にします。担当者名が空の場合は「担当_」というシート名で出力されます。
$("担当_")$(担当者名)
Excel テンプレート内に Customine で対応していない Excel 関数が使用されている場合に起こるエラーです。
テンプレート内のセルをレコードのデータで置き換えた後、そのデータを試算式セルにも反映させるために、全シートの再計算が行われます。再計算ではすべての Excel 関数をサポートしているわけではなく、一部の関数しかサポートされていません。対応外の関数を使用しているとこのエラーが起こります。
エラーメッセージ中の [XXXX] の部分に関数名が表示されます。この関数を使用しないようにテンプレートを修正してください。
Customine が対応している関数のリストはこちらです。
テンプレートのシート名の先頭に「#」を付けているケースで、別のシートから元の「#」付きのシートを計算式で参照している場合に発生します。
シート名の先頭に「#」を付けている場合、そのシートがレコード毎に複数出力されます。そして、元の「#」付きのシートは削除されます。更に、テンプレートのデータ置き換えが終わった後に、全シートの再計算が行われます。この再計算時に「#」付きシートを参照するような計算セルがあると、参照先のシートが既に削除されているためにこのエラーが発生します。
テンプレートを修正し、「#」付きのシートを別のシートから参照しないようにします。
テンプレートのシート名に【】を含むシートがあり、そのシートを別シートから参照する式がある場合に発生します。【】以外に①のような文字でも発生します。
Customine のExcel/PDF出力では、他シートを参照する式で【】など一部の全角文字を正しく認識できません。
テンプレートを修正し、シート名に【】のようにエラーの原因になっている文字を含めないようにします。
$FOREACH に対応する $END が見つからなかった場合に発生します。
$FOREACH に対応する $END は、$FOREACH と同じ列上に置いてください。
$FOREACH と $END の間にデータ用の行が1つもない場合に発生します。
$FOREACH と $END の間にはデータ行を最低1行入れるように、テンプレートを修正してください。
テンプレートで $FOREACH~$END の範囲にまたがるような縦方向のセル結合がある場合に起こります。
テンプレートを修正し、セル結合が $FOREACH~$END の内側に納まるようにしてください。
Excelのテーブル機能を使用していて、$FOREACH~$END展開の結果、Excelのテーブルにデータ行が1つもない状態になってしまう場合に、このエラーが出ます。
Excelのテーブル機能では、ヘッダ行と最低1行のデータ行が必要です。一方$FOREACH~$ENDでは、対象データが1つもない場合、$FOREACH~$ENDの行が単に削除されますので、データ行が1つもないテーブルができてしまう可能性があります。
$FOREACHで展開するデータが1つもない可能性がある場合、Excelのテーブル機能を使用せずに通常の表としてテンプレートを作成してください。あるいは必ず1行以上のデータ行ができるように、テンプレートにダミー行を入れるのも手です。
テンプレートの $(フィールドコード) 記法で、括弧が閉じていないものがあります。
エラーメッセージの後ろに、シート名とセルが表示されますので、テンプレートの該当箇所を修正して正しく括弧が閉じるようにしてください。
テンプレートの $コマンド(フィールドコード) 記法で、認識できないコマンドが使用されている場合に発生します。
例えば $NUM(xxx) を $NUN(xxx) のようにタイプミスしたような場合にも起こります。
エラーメッセージの後ろに、シート名とセルが表示されますので、テンプレートの該当箇所を確認、修正してください。タイプミスにご注意ください。
テンプレートの $IFコマンドの記法に誤りがある場合に発生します。
リファレンスマニュアルに記載されている $IF の仕様を参照して、正しい記法に修正してください。なお、$IF の記法はいくつかの種類がありますので、どの記法で記述したいのかも考慮してください。
セルにセットするフィールド値の文字数が、Excel の上限値である 32767 を超えている場合に発生します。
このような巨大なテキストデータが含まれる可能性があるフィールドは、Excel 出力対象から外すことを推奨します。
どうしてもそのフィールドを出力しなければならない場合は、スライスを用いて出力する行数を制限するなどして、セルにセットするテキストのサイズを小さくしてください。