新規投稿
フォローする

2つのアプリのラジオボタンを更新

kintone初心者なのですがよろしくお願い致します。

Aアプリで業務指示を出してBアプリで完了報告を出すアプリを作成しているのですが、
Bアプリで完了報告(ドロップダウンを完了)して保存したらAアプリの保存済みレコードのドロップダウンも未完了から完了に更新をしたいです。

※Aアプリ・Bアプリ共にドロップダウン⇒未完了・完了(初期値は未完了)
ドロップダウンのステータス(未完了・完了)を一覧で使用したいです。

ここのフォーラムに記載されていた下記のコードを参考にさせて頂いたのですがうまく動かなく(エラーは出ていないのですが)

ご教授お願い致します。

(function () {

    "use strict";

    var putAppId = 1; // アプリBのアプリID

    var uniqueField = ラジオボタン; 

    kintone.events.on('app.record.detail.process.proceed', function (event) {

        if (event.nextStatus === '完了') {

            var uniqueFieldValue = event.record[uniqueField].value;

            var body = {

                'app': putAppId,

                'updateKey': {

                    'field': uniqueField,

                    'value': uniqueFieldValue,

                },

                'record': {

                    'ラジオボタン': { // ラジオボタンのフィールドコード

                        'value': '完了'

                    }

                }

            };

            kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function (resp) {

                // success

                alert('アプリAを更新しました。');

            }, function (error) {

                // error

                alert('アプリAが更新できませんでした。\n' + error);

            });

        }

        return event;

    });

})();
0

6件のコメント

Avatar
Kazuhiro Yoshida

プログラミングはよく分かりませんが、

"uniqueField = ラジオボタン"というのは確かでしょうか?

更新処理をしたいということでしたら、更新のキー項目には"ラジオボタン"は使えないかと。

APIドキュメントにあたってみてはいかがでしょう。
https://developer.cybozu.io/hc/ja/articles/201941784

あと、今更ですがチュートリアルに大体書いてあるのでそちらをみるのも良いかと思います。

0
Avatar
MS

Yoshidaさま
ご返信ありがとうございます。
再度チュートリアルをやり直して見たのですが上記に結びつきそうなところを見つけられませんでした。

0
Avatar
mionix

こんにちは

まず、使用しているフィールドがわかりません。

タイトルには「ラジオボタン」と書いてありますが、

詳細には「ドロップダウン」とあります。

処理は「プロセスステータス」を使用しています。

すべて「ラジオボンタン」でよろしいんでしょうか。

'app.record.detail.process.proceed'

これだとプロセスを変更した時に発火するイベントになりますが、

恐らくプロセスは使用しておらず、保存時に発火させたいのではないでしょうか。

発火イベントは以下の記事で確認できます。

https://developer.cybozu.io/hc/ja/articles/201941984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%BF%BD%E5%8A%A0%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88#success 

if (event.nextStatus === '完了')

こちらもプロセスステータスが「完了」になったときにPUT(更新)する記述になっています。

以下サンプルコードになります。

動作確認はしていないので、フィールド名を変えていただいて確認してみてください。

わからないことがあればお答えします。

// 保存完了時、Bアプリの「Bラジオボタン」が「完了」だった時、
// Aアプリの「Aラジオボタン」を「完了」にする
(function () {
  'use strict';
  var putRecord = function (recordId) {
    var params = {
      app: appId, // 更新先のアプリID
      updateKey: {
        field: 'uniqueField', // 更新先の重複禁止フィールド
        value: recordId, // 更新元の重複禁止フィールドの値
      },
      record: {
        'Aラジオボタン': { // 更新したいフィールドID
          value: '完了'
        }
      }
    };
    return kintone.api(kintone.api.url('/k/v1/record'), 'PUT', params).then(function (resp) {
      alert('更新');
    }, function (error) {
      alert('失敗');
    });
  };
  // 発火イベント配列
  var events = ['app.record.create.submit.success', // 新規作成、保存成功時イベント
    'app.record.edit.submit.success' // 編集、保存成功時イベント
  ];
  // 処理
  kintone.events.on(events, function (event) {
    var record = event.record;
    var Id = record['ID']['value']; // 重複禁止のID
    // Bラジオボタンが完了だったらPUT処理実行
    if (record['Bラジオボタン']['value'] === '完了') {
      return putRecord(Id);
    }
    return event;
  });
})();
mionixにより編集されました
0
Avatar
MS

mionix様

ご連絡ありがとうございます。

その通りでプロセスを使用しないで保存時に処理をしたいです。

根本的に間違えていたようですね。

試させていただきます。

何かわからないことがあればご相談させてください。

何卒よろしくお願い致します。

 

 

 

0
Avatar
mionix

承知しました。

であれば、上記のコードで良いかと思います。

上手く処理が実行されない時はF12を押すとエラーが表示されます。

エラー文も参考になるのでご活用ください。

ご存じでしたら申し訳ありません。

0
Avatar
MS

mionix様

ご返信ありがとうございます。

ご丁寧にありがとうございます。

引き続きよろしくお願い致します。

0
サインインしてコメントを残してください。