フォーラムへの返信
-
投稿者投稿
-
sweetie参加者
2015/10/1
ReportsConnect for KintoneでAPIトークンでの認証が可能になりました。
APIトークンでの認証を行う場合は、帳票レコードのログイン欄にReportsconnectアプリのトークン,データのアプリのトークンの順にカンマ区切りで指定し、パスワード欄はブランクにします。
(APIトークンのアクセス権は「レコード閲覧」が必要。PDFをデータのアプリに添付する場合はデータのアプリのトークンに「レコード編集」が必要)詳しくは以下の記事を参考にしてください。
http://kptech.cocolog-nifty.com/blog/2013/11/salesforce-repo.htmlまた、APIトークンによる認証を行う場合でレコードを添付するアプリが現在のアプリと異なる場合は、帳票レコードの添付先フィールドに“アプリID;レコードID;フィールドコード;添付するアプリのAPIトークン”の形式で入力します。
(APIトークンに「レコード編集」のアクセス権が必要)詳しくは以下の記事を参考にしてください。
http://kptech.cocolog-nifty.com/blog/2013/11/reports-conne-4.htmlsweetie参加者とりあえず解ったところまで。
こちらのデバッグ環境に載せて確認したところ、データは正しく読めています。
Jasperreportsに渡す直前まで、データは途切れていないので、Jasperreports側のbugと思われます。iReportの設定で、回避する方法があるか、もう少し調べてみます。
sweetie参加者特定のデータ、アプリで現象が再現できるのであれば、こちらからその環境にアクセス出来るようにしていただくか、データ、アプリを送ってもらえれば、こちらのテスト環境で調査することは可能ですが。
sweetie参加者帳票の文字が途中で切れる件ですが、環境によって発生したりしなかったりするとの事ですので、考えられる調査方法を以下に書いてみます。
①まず、出力されるPDFを見る環境で表示に影響がある可能性があるので、NGの環境で出力したPDFを
OKの環境で見た場合どうなるかを確認して下さい。②それ以外に、環境に依存する部分としては、ReportsconnectのサーバーがAPIでレコードを読む部分ぐらいしか考えられないと思いますが、
その部分は、kintoneのJavaのSDKを使用して、以下のように読んでいます。Connection db = new Connection(domain, login,password);
ResultSet rs = db.select(apid, ql, null);
(appidはデータのアプリID、qlはクエリ)なお、レコード番号で読む場合は以下の様にしています。
ResultSet rs = db.select(apid, recid);
このselect(long, long)のメソッドは標準のconnectionには無く、以下の様なカスタムメソッドを作って対応しています
public ResultSet select(long app, long recid) throws DBException {
StringBuilder sb = new StringBuilder();
sb.append(“app=”);
sb.append(app);
sb.append(“&id=”);
sb.append(recid);
String api = new String(sb);
String response = request(“GET”, “record.json?” + api, null);
JsonParser parser = new JsonParser();
ResultSet rs = null;
try {
rs = parser.jsonToResultSetSingle(this, response);
} catch (IOException e) {
throw new ParseException(“failed to parse json to resultset”);
}
return rs;
}以上のAPIをNGのになる環境で発行した場合、正しくデータが返っているか確認してみたらいかがでしょうか?
sweetie参加者Javascript上ではA帳票B帳票の差は無いようにおもえるので、うまく出ないA帳票の帳票レコード側の設定を確認してみたらどうでしょうか?
帳票レコードのデータアプリIDまたは対象レコード番号あたりが怪しいですが。
sweetie参加者Reportsconnecyは、サブ画面に対してダウンロードするデータを送っているので、Javascriptでダウンロードの終了を感知できれば可能かもしれませんが…
PDFファイルをレコードに添付する方法であれば、以下のページにある方法でサブ画面を開かない事は可能です。
http://kptech.cocolog-nifty.com/blog/2013/11/reports-conne-4.html
sweetie参加者1回の操作で複数のPDFを作成したいという意味でしょうか?
基本的にはReportsConnect for Kintoneでは、1回の操作で1個のPDFファイルを作成するようになっています。
以下の記事に別画面が開かずにPDFファイルをアプリに添付する例があります。
http://kptech.cocolog-nifty.com/blog/2013/11/reports-conne-4.htmlこれを応用して、戻った画面上のJavascriptから次のPDFを作成する指示をだすように実装すれば可能かもしれません。
sweetie参加者以下のページにPDFファイルをオブジェクトに添付する方法があります。
http://kptech.cocolog-nifty.com/blog/2013/01/reports-connect.htmlここで説明しているように、
rc.setReturnUrl(‘/servlet/servlet.FileDownload’);
とすると、添付を行った上に、ファイルがダウンロードされると思いますが。sweetie参加者同様の問い合わせはありません。
該当時間帯での、こちらで検出したエラーの内容を見ましたが、
evaluating expression error (表示型式のエラー)
file not found (画像ファイルが無い)等の帳票開発時に個別によく発生する類のエラーのみで、システム的なエラーは発生していません。
sweetie参加者上記の件ですが、5/7現在はLocale.USの指定なしでも西暦と判断されているようです。
ただし、西暦としてparseする場合は予防処置として明示的にLocale.USを指定することをおすすめします。sweetie参加者5/1 12:00頃から、19:00ということですが、Reportsconnectサーバー上では障害は検知されていません。
当日の統計資料上も、通常どうり処理を行っています。
エラーの内容はどのようなものですか?
sweetie参加者上記の件ですが、Reportsconnectがホスティングしている、herokuのJavaのdefaultが2015年5月1日付近から突然変更された模様です。
2015年の表示が4003年と表示されるようなケースです。
現状では確認しているのはSimpleDateFormatを使用している場合のみに発生します。
現状、問題なく出ている場合でも、Locale.USの指定を追加して副作用はありませんので、SimpleDateFormatを第二引数なしで使用している場合には対処をおすすめします。- この返信は9年、 6ヶ月前にsweetieが編集しました。
sweetie参加者sweetie参加者先ほど確認したところ、
Text Field Expressionで new java.util.Date() と指定して、
Patternで yyyy年 MM月 dd日 と指定したフィールドで
正しく、2015年03月25日 と表示されています。Patternで何を指定しているか、また、$F{日付}をそのまま出力した場合何が表示されるかを確認してみてください。
sweetie参加者HNagatomiさん、
“kpsdebug_host”:”nissan-neji–kpsr.ap0.visual.force.com”
と、いうことなので、ホスト名としてパラメータで上がっているのは
nissan-neji–kpsr.ap0.visual.force.com
と、いううことになります。こちらの環境で試す限り、このホスト名に対しては正常にlogin.saleforceを返しています。
恐らくそちらの環境の問題と思われますが、回避する手段としては、印刷時にkpsr.ReportsConnectControllerのgetParms().putメソッドで明示的にパラメータを上書き可能ですので、goPrintメソッドを呼ぶ前に
rc.getParms().put(‘Kps_hostSafix’,’a’);
という感じで、Kps_hostSafixパラメータを上書きして回避してもらえないでしょうか。
これで、login.salseforceにいくはずです。なお、明示的にsandboxへ行かせたい場合は、
rc.getParms().put(‘Kps_hostSafix’,’kpsr.cs5.visual.force.com’);で、test.salesforceへ行きます。
なお、帳票オブジェクトの印刷テスト等を行う場合は、先ほどのように「パラメータ」テキストエリアにパラメーターを入れて上書きしてください。
-
投稿者投稿