テーブル内の情報をテーブル外へ転記

システム系初心者です。お手柔らかにお願いいたします<(_ _)>

〈ことの発端〉
テーブル内の情報をアクション機能を使い、別アプリへ自動転記したいが、アクション設定画面でテーブル内項目が表示されない

〈行いたいこと〉
同じアプリ内に転記用の「文字列(一行)」を設け
テーブル内の情報が「文字列(一行)」に自動転記されるよう設定し
アクション機能で「文字列(一行)」がコピー元になるよう設定する

行いたいことの2行目で手こずっております。
※前職の方が残したJavaScript(コード?)があります。現在も使用しているコードの為、その下に貼り付けようと思っています。

以前、こちらのトピックに記載した内容と同じになるのですが、ご質問の内容を読む限り、私が行っているカスタマイズと同様かと思いますので、以下、ご参考になればと思います。

◆フィールドの設定

サブテーブルの「文字列1行フィールド」の内容をサブテーブル外の「文字列1行フィールド」へ転記します。

◆サンプルコード

(() => {
    'use strict';

    const lineCount = (event) => {

        //サブテーブルフィールドの中身を取得
        const table = event.record.サブテーブル.value;

        //重複しない値だけを保存するためのSetを作成(Setで同じ値を除外)
        const uniqueTitles = new Set();

        //サブテーブルの各行を1つずつ処理
        table.forEach(row => {
            const title = row.value.文字列1行フィールド.value;

            // 値が空でなければSetに追加
            if (title) {
                uniqueTitles.add(title);
            }
        });
        //Setを配列に変換し、カンマ区切りの文字列に変換
        //例:["A", "B", "C"] → "A,B,C"
        event.record.サブテーブル_一覧.value = Array.from(uniqueTitles).join(',');

        return event;
    };

    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], lineCount);

})();

tom様
ご回答いただきありがとうございます<(_ _)>:sparkles:

使用しているフィールドコードに変更し、保存を押しましたが、「更新に失敗しました」と案内が出てしまします…

コードではなく、PCやアプリに問題があるのでしょうか。
もしご存じでしたらご教示いただけますと幸いです。

「更新に失敗しました」だけでは何が原因かは分からないですね・・・。

そもそもですが、ご質問の内容であれば、標準機能でも可能かも知れませんので、JavaScriptが分からないという事であれば、標準機能で実現できる方向性を検討された方が良いかと。

以下の様に計算フィールドを活用すれば、アクションの判定に使用する事ができます。その上で、計算フィールドがユーザーから見えてしまうのが不格好という事であれば、その計算フィールドをsetFieldShownで消してあげれば良いと思います。

①使用するアクション名を選択肢として設定。

②次にテーブル内に計算フィールドを設置

③テーブル外に、「②」の計算結果を合計するフィールドを設置

④アクションの利用条件として、「合計が1以上」と設定

tom様

丁寧にご説明いただきありがとうございます。
JavaScriptの他に方法があるのですね…大変助かります

手順通りに行い、アクションの編集まで来たのですが、「フィールドの関連付け」のコピー元は何を選択したらよいでしょうか。

テーブル「契約一覧」内の「石種」を他アプリに自動転記したく、
「石種」は石種IDを選択すると自動入力されます。

IDをルックアップで取得されているので、種類が多すぎる場合は現実的ではないですが・・・

頑張って標準機能で何とかしようと考えると、テーブル外のSUMの計算結果を「文字列フィールド」のIF文で文字列に直して、その文字列をコピー元に使用するとかでしょうか。

image

早々にご返信いただきありがとうございます :sob:
なんとなく設定できそうなのですが、ひとつ質問させてください<(_ _)>

・「アクションA」「アクションB」「アクションA判定」「アクションB判定」「アクションA合計」「アクションB合計」、例ではAとBの2種類づつ作成していますが、これは石種の数だけ作成する必要がありますでしょうか

自動転記したい箇所は一つなので、最初から「アクションA」に代わる部分のみ作成し、「アクションB」はノータッチでした…

複数のフィールドが必要かどうかは、どのような入力が想定されるか次第ですね。シンプルな分かりやすい例として、「合計>0」という式で判定しているだけなので、想定される入力パターンや社内ルール次第でフィールドは1つに纏められる可能性もあります。

纏めれない場合(標準機能だと現実的ではない場合)に初めて、標準機能を諦めてJavaScriptを検討するとなると思います。

JavaScriptの場合は、「更新に失敗しました」のエラー原因を究明する必要があると思いますが、前任の方のコードと私が提示したサンプルコードが競合しているという可能性が高いので、適用しているコードを1つずつ分けて、エラーなく動くかデバックされた方が良いかと思います。

tom様

ここまで丁寧に教えていただき、誠にありがとうございました :woman_bowing:
石種リストの管理担当者に確認後、改めて試してみようと思います。

大変助かりました。。本当にありがとうございました<(_ _)>

ということは「テーブルには複数行ある」の想定でなので...

「どの行」の「どのフィールド」を転記する、の指示が必要ではないでしょうか?
【=テーブル内にフィールドを設け「指示フラグをたてる」ひと手間が必要】

Pluginを使って検証してみました

テーブル中➡外へcopy

「どの行」 = フラグフィールドに「1」と入力した行
「どのフィールド」 = 品名フィールドと型式フィールド【石種フィールド】Pluginで設定

使ったPluginは条件分岐処理プラグイン(TiS/条件付き無料)です
Pluginの設定画面が必要な場合は、その旨返信頂けば貼ります:blush:

検証GIFは動作3回までです
再度動作させたいときは F5を押してください(頁のリロード)

ふゆき様

わかりやすくご説明いただきありがとうございます<(_ _)>
URL先に飛べず、検索してみましたがうまく探せませんでした…
再度URLをお送りいただけますでしょうか。

(また、プラグインの追加を試みましたが権限が無いようでしたので上のものに確認してみたいと思います :sweat_droplets:

お手数ですが、どうぞよろしくお願いいたします。

URL は
https://www.tis2010.jp/branchprocess/

です。

取り急ぎ、後ほど設定画面を貼ります:grin:

Pluginの検証設定画面を貼ります:blush:
(画像を2回に分けてクリックすると拡大します)

ご参考まで!

ふと、思ったのですが...

「更新に失敗しました」

は「JSEdit for kintone」と云う
Plugin式のエディタからではないでしょうか?

弊社もカスタマイズ禁止で
情シス担当者にPluginの登録を依頼しています。

kintone の システム管理者でないと(=権限が無い)
カスタマイズのJavaScript(コード)も、Pluginの登録、両方できないです。

ふゆき様

これまたわかりやすく…ありがとうございます!

また「更新に失敗しました」の件ですが、システム担当が私のパソコンを操作して出来ないと焦っていたので、ふゆき様の説がすごく濃厚な気がしてきました。
システム担当のPCで操作していただけるかも併せて、確認してみます!
本当にありがとうございます :sob:
兆しが見えてうれしいです。大変助かりました。