ボタンからプリントクリエイターへ連携ができません。

以下のjsでkintone内のボタンクリックからプリントクリエイターの該当帳票を呼び出しデータを移行させています。見積書・注文書・注文請書まではボタンクリックで可動するのですが、引渡書だけ反応しません。同じように書き込んでいると思うのですが、どこに問題があるのでしょうか。ご指導ください。

よろしくお願いいたします。

 (function() {
    “use strict”;
       
 var reportNo = new Array();
 var appNo = new Array();
 reportNo = [‘見積書NO’,‘注文書NO’,‘注文請書NO’,‘引渡書NO’];
 appNo = [‘76’,‘66’,‘79’,‘567’];

 // 登録・編集イベント
 var events = [‘app.record.create.show’,‘app.record.edit.show’];
 kintone.events.on(events, function (event) {
  var i = 0;
  //帳票NOは非表示
  for (i = 0 ; i < reportNo.length ; i++) {
   kintone.app.record.setFieldShown(reportNo[i],false);
  }
 });

    // 詳細表示イベント
    var events = [‘app.record.detail.show’];
    kintone.events.on(events, function (event) {
  var i = 0;
  //帳票NOは非表示
  for (i = 0; i < reportNo.length; i++){
   kintone.app.record.setFieldShown(reportNo[i],false);
  }

  var record = event.record;

  // ボタンの作成

  //見積書
  var mitsumori_button = document.createElement(‘button’);
  mitsumori_button.id = ‘mitsumori_button’;
  mitsumori_button.innerHTML = ‘見積書’;
  kintone.app.record.getSpaceElement(‘mitsumori_btn_field’).appendChild(mitsumori_button);

  //注文書
  var chumon_button = document.createElement(‘button’);
  chumon_button.id = ‘chumon_button’;
  chumon_button.innerHTML = ‘注文書’;
  kintone.app.record.getSpaceElement(‘mitsumori_btn_field’).appendChild(chumon_button);

  //注文請書
  var chumon_uke_button = document.createElement(‘button’);
  chumon_uke_button.id = ‘chumon_uke_button’;
  chumon_uke_button.innerHTML = ‘注文請書’;
  kintone.app.record.getSpaceElement(‘chumon_uke_btn_field’).appendChild(chumon_uke_button);

   //引渡書
  var hikiwatasisyo_button = document.createElement(‘button’);
  hikiwatasisyo_button.id = ‘hikiwatasisyo_button’;
  hikiwatasisyo_button.innerHTML = ‘引渡書’;
  kintone.app.record.getSpaceElement(‘hikiwatasisyo_btn_field’).appendChild(hikiwatasisyo_button);
    

        //各ボタン押下時
  document.getElementById(‘mitsumori_button’).onclick = function () { AddReport(0); };
  document.getElementById(‘chumon_button’).onclick = function () { AddReport(1); };
  document.getElementById(‘chumon_uke_button’).onclick = function () { AddReport(2); };
  document.getElementById(‘oshirase_button’).onclick = function () { AddReport(3); };
  document.getElementById(‘hikiwatasisyo_button’).onclick = function () { AddReport(4); };
 });
   
 //帳票アプリへの登録
 function AddReport(btnNo) {
  var i = 0;
  var lastRID = -1;
  var record = event.record;
  var rec = kintone.app.record.get();
  var myRecID = kintone.app.record.getId();
  var url = “https://000000.cybozu.com/k/”;
  var myAppId = 000;
  var otherAppId = appNo[btnNo];
  var recNo = rec[‘record’][reportNo[btnNo]][‘value’];

  //パラメータの設定
  switch (btnNo){
  //見積書
  case 0:
   var mitsumoriPrice = 0;
   var mitsumoriTblIdx = -1;
   var recMax =rec[‘record’][‘見積テーブル’][‘value’].length;
   for (i = 0; i<recMax; i++){
    if (rec[‘record’][‘見積テーブル’][‘value’][i][‘value’][‘確定_見積’][‘value’] == ‘選択’){
     mitsumoriTblIdx = i;
     break;
    }
   }
   if (mitsumoriTblIdx < 0) {
    return;
   }
   mitsumoriPrice = Math.floor ( Number( rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘見積額_見積’][‘value’] ) *
        ( ( 100 + Number( rec[‘record’][‘消費税率’][‘value’] ) ) / 100 )) +
        Number( rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘消費税調整額_見積’][‘value’] ) ;
   var param = {
    app:otherAppId,
    record: {
     見積NO: { value: rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘見積書NO_見積’][‘value’] },
     見積日: { value: rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘見積日_見積’][‘value’] },
     消費税調整額: { value: rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘消費税調整額_見積’][‘value’] }, 
     見積合計金額_税込: { value: mitsumoriPrice },
     工事NO: { value: rec[‘record’][‘工事NO’][‘value’] },
     物件名: { value: rec[‘record’][‘物件名’][‘value’] },
     工事開始予定: { value: rec[‘record’][‘工事開始予定’][‘value’] },
     工事完了予定: { value: rec[‘record’][‘工事完了予定’][‘value’] },
     工事名: { value: rec[‘record’][‘工事名’][‘value’] },
     顧客名: { value: rec[‘record’][‘顧客名’][‘value’] },
     号室: { value: rec[‘record’][‘号室’][‘value’] },
     担当: { value: rec[‘record’][‘工事担当’][‘value’] },
     消費税率: { value: rec[‘record’][‘消費税率’][‘value’] }
    }
   }
   break;

  //注文書
  case 1:
   var mitsumoriTblIdx = -1;
   var recMax =rec[‘record’][‘見積テーブル’][‘value’].length;
   for (i = 0; i<recMax; i++){
    if (rec[‘record’][‘見積テーブル’][‘value’][i][‘value’][‘確定_見積’][‘value’] == ‘選択’){
     mitsumoriTblIdx = i;
     break;
    }
   }
   if (mitsumoriTblIdx < 0) {
    return;
   }
   var param = {
    app:otherAppId,
    record: {
     NO: { value: rec[‘record’][‘工事NO’][‘value’] },
     工事名: { value: rec[‘record’][‘工事名’][‘value’] },
     工事名称: { value: rec[‘record’][‘物件名’][‘value’] },
     号室: { value: rec[‘record’][‘号室’][‘value’] },
     工事場所: { value: rec[‘record’][‘現場住所’][‘value’] },
     工事期間_自: { value: rec[‘record’][‘着工日_実施’][‘value’] },
     工事期間_至: { value: rec[‘record’][‘完工日_実施’][‘value’] },
     工事代金: { value: rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘見積額_見積’][‘value’] },
     消費税率: { value: rec[‘record’][‘消費税率’][‘value’] }
    }
   };
   break;

  //注文請書
  case 2:
   var mitsumoriTblIdx = -1;
   var recMax =rec[‘record’][‘見積テーブル’][‘value’].length;
   for (i = 0; i<recMax; i++){
    if (rec[‘record’][‘見積テーブル’][‘value’][i][‘value’][‘確定_見積’][‘value’] == ‘選択’){
     mitsumoriTblIdx = i;
     break;
    }
   }
   if (mitsumoriTblIdx < 0) {
    return;
   }
   var param = {
    app:otherAppId,
    record: {
     NO: { value: rec[‘record’][‘工事NO’][‘value’] },
     注文者氏名: { value: rec[‘record’][‘顧客名’][‘value’] },
     工事名称: { value: rec[‘record’][‘物件名’][‘value’] },
     号室: { value: rec[‘record’][‘号室’][‘value’] },
     工事名: { value: rec[‘record’][‘工事名’][‘value’] },
     工事場所: { value: rec[‘record’][‘現場住所’][‘value’] },
     工事期間_自: { value: rec[‘record’][‘着工日_実施’][‘value’] },
     工事期間_至: { value: rec[‘record’][‘完工日_実施’][‘value’] },
     工事代金: { value: rec[‘record’][‘見積テーブル’][‘value’][mitsumoriTblIdx][‘value’][‘見積額_見積’][‘value’] },
     消費税率: { value: rec[‘record’][‘消費税率’][‘value’] }
    }
   };
   break;

   
  //引渡書
  case 4:
   var param = {
    app:otherAppId,
    record: {
     請求先住所: { value: rec[‘record’][‘請求先住所’][‘value’] },
     顧客名: { value: rec[‘record’][‘顧客名’][‘value’] },
     工事名: { value: rec[‘record’][‘工事名’][‘value’] },
     完了引渡日: { value: rec[‘record’][‘完了引渡日’][‘value’] }
    }
   };
   break;
  }
    //パラメータに更新対象のレコードNOを追加
   param.id = recNo;
  
   //CSRFトークンの取得
   var token = kintone.getRequestToken();
   param[“__REQUEST_TOKEN__”] = token;

   //更新
   var appUrl = kintone.api.url(‘/k/v1/record’);
   var XmlHttp = new XMLHttpRequest();
   XmlHttp.open(‘PUT’, appUrl, false);
   XmlHttp.setRequestHeader(‘Content-Type’, ‘application/json’);
   XmlHttp.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
   XmlHttp.send(JSON.stringify(param));
   
   //編集画面を開く
   window.open(url + otherAppId + “/show#record=” + recNo + “&mode=edit”);
   
  }, function(resp) {
   
   if (resp.message !== undefined){
      
    //CSRFトークンの取得
    var token = kintone.getRequestToken();
    param[“__REQUEST_TOKEN__”] = token;
     
    //新規登録
    var appUrl = kintone.api.url(‘/k/v1/record’);
    var XmlHttp = new XMLHttpRequest();
    XmlHttp.open(‘POST’, appUrl, false);
    XmlHttp.setRequestHeader(‘Content-Type’, ‘application/json’);
    XmlHttp.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
    XmlHttp.send(JSON.stringify(param));
    
    if (XmlHttp.status == 200) {
     var respdata = JSON.parse(XmlHttp.responseText);
     lastRID = respdata[“id”];

     //登録したレコード番号を取得する
     var rec = kintone.app.record.get();
     recNo = lastRID;
     kintone.app.record.set(rec);

     //レコード番号を呼出し元画面に返す
     var retparam;
     switch (btnNo){
      case 0:
          retparam = { app:myAppId, id:myRecID, record: {見積書NO: { value: recNo }} }
          break;
      case 1:
          retparam = { app:myAppId, id:myRecID, record: {注文書NO: { value: recNo }} }
          break;
      case 2:
          retparam = { app:myAppId, id:myRecID, record: {注文請書NO: { value: recNo }} }
          break;
      case 3:
          retparam = { app:myAppId, id:myRecID, record: {お知らせNO: { value: recNo }} }
          break;
      case 4:
             retparam = { app:myAppId, id:myRecID, record: {引渡書NO: { value: recNo }} }
             break;
                        }

     // CSRFトークンの取得
     var token = kintone.getRequestToken();
     retparam[“__REQUEST_TOKEN__”] = token;

     // 更新
     var appUrl = kintone.api.url(‘/k/v1/record’);
     var XmlHttp = new XMLHttpRequest();
     XmlHttp.open(‘PUT’, appUrl, false);
     XmlHttp.setRequestHeader(‘Content-Type’, ‘application/json’);
     XmlHttp.setRequestHeader(‘X-Requested-With’, ‘XMLHttpRequest’);
     XmlHttp.send(JSON.stringify(retparam));

     //呼出し元画面をリロード
     location.reload(true);
    }

    //編集画面を開く
    window.open(url + otherAppId + “/show#record=” + lastRID + “&mode=edit”);
    
    }
    
   });
   
  };
 
})();

工藤 淳さん
cstapの瀧ヶ平です。

詳しく処理は追えていないのですが、ソースコードを見ると正しく括弧が閉じていない箇所などがありそれが原因かもしれません。
また、ブラウザの開発者ツールなどで、どの処理まで実行されているかや、出ているエラーなどを確認していただければ問題がわかるかもしれません。

瀧ヶ平様

さっそくチェックいただきありがとうございます。

具体的に「ソースコードを見ると正しく括弧が閉じていない箇所」をご指摘いただけませんでしょうか。

よろしくお願いいたします。

工藤さん

すみません、こちらもエディタで括弧の対応が足りていないのを確認しただけなので、そういった部分は出来ればご自身で探していただきたいです…

繰り返しにはなりますが、こちらの記事などを参考にデバッグして頂いて、起きているエラーなどを教えていただけると回答しやすいので、お試しいただければ幸いです。

お世話になります。

エラー表示は以下のようなものです。

Addreport(8)が対象になっていないということと理解しましたが、知見が浅く次の対応がわかりません。

ちなみに上記のJSはベンダー作成の別アプリで(7)まで作成済み稼働中のものに、今回ネックになっている(8)を追加して

動かそうとしています。

 

どうぞよろしくお願いいたします。

工藤さん

見たところレコード内に reportNo[8]に対応するフィールドコードの要素が存在していないのが原因だと思います。
reportNoの配列の内容がわからないので推測ですが、reportNoの添字8に対応する文字列が抜けているか、アプリのフォーム設定の問題のどちらかではないでしょうか

瀧ヶ平様

やっと解決しました。番号の受け渡しをさせる設定画面の「フォームの追加」が抜けていました。ご指導ありがとうございました。

また、よろしくお願いいたします。