新規投稿
フォローする

テーブルのデータを別のアプリで取得する方法

既出の質問と類似しているものと思いますが、解決方法がわからず困っています。

初心者向けのアドバイスお願いします。参考にしたページはこちら

背景・実現したいこと

アプリBのレコードを登録するときに、アプリAから成績書番号をキーに必要な情報(文字列1行、テーブルのデータ(複数あり))を転記させたい。

全部一度には考えられなかったので、コードはテーブル1つのデータ転記からチャレンジしましたが、そこすら出来ませんでした。

アプリA:アプリID→CTTIreport001

アプリAとBは転記させたい部分のフィールドの種類やフィールドコードは同じにしています。

エラー情報(開発者ツールのコンソール)

 edit.js:123 Uncaught ReferenceError: CTTIreport001 is not defined

AのアプリID書くところに登録してあるアプリIDを書いているつもりなのですが、参照するものがありませんと出ているようで。。。なぜでしょうか?

利用したソースコード

(function() {
    "use strict";

    kintone.events.on(["app.record.edit.submit", "app.record.create.submit"], function(e) {
        var record = e.record;
        var reportnumber = record["成績書番号"].value;
        var formdetails1 = {};
        
        var body = {
            'app': CTTIreport001, // AのアプリID
            'query': '成績書番号 = "' + reportnumber + '"'
        };

        return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {
            resp.records.forEach(function(record) {
                var TableA1 = record["PAGE1"].value;
    
                for (var t = 0; t < Table.length; t++) {
                    var Length1 = Table[t].value["LENGH_OF_JIB1"].value;
                    var Radius1 = Table[t].value["RADIUS1"].value;
                    var Angle1 = Table[t].value["ANGLE1"].value;
                    var Test1 = Table[t].value["TEST_LOAD1"].value;
                    var Safe1 = Table[t].value["SAFE_WORKING_LOAD"].value;


                        fomdetails1[Length1] = {
                            "LENGH_OF_JIB1": Length1,
                            "RADIUS1": Radius1,
                            "ANGLE1": Angle1,
                            "TEST_LOAD1": Test1,
                            "SAFE_WORKING_LOAD": Safe1
          
                    };
                }
            });
            return setData();
        });
        
        function setData() {
            var TableB1 = record["PAGE1"].value;
            var index = TableB.length - 1;
    
          // テーブル初期化
            for (var i = 0; i <= index; i++) {
                TableB1.splice(0, 1);
            }
    
          // 取得したデータを追加
            for (var key in fomdetails1) {
                TableB1.push({
                    value: {
                        "LENGH_OF_JIB1": {value: fomdetails1[key]["LENGH_OF_JIB1"], type: "SINGLE_LINE_TEXT"},
                        "RADIUS1": {value: fomdetails1[key]["RADIUS1"], type: "SINGLE_LINE_TEXT"},
                        "ANGLE1": {value: fomdetails1[key]["ANGLE1"], type: "SINGLE_LINE_TEXT"},
                        "TEST_LOAD1": {value: fomdetails1[key]["TEST_LOAD1"], type: "SINGLE_LINE_TEXT"},
                        "SAFE_WORKING_LOAD": {value: fomdetails1[key]["SAFE_WORKING_LOAD"], type: "SINGLE_LINE_TEXT"}
                    }
                });
            }
            return e;
        }
    });
})();

0

3件のコメント

Avatar
mls-hashimoto

エラーの出ている部分のみの回答になりますが、アプリIDは通常数字です。
アプリを開いた時に「https://{サブドメイン}.cybozu.com/k/xxx/」のxxxの部分がアプリIDです。

他の確認方法として、アプリを開いている状態で開発者ツール等から

kintone.app.getId();
 

を実行すればアプリIDを取得できます。

ただ、エラーの原因そのものは、アプリIDとしている「CTTIreport001」が変数になっているためです(文字列として扱う場合はシングルクォートまたはダブルクォートで囲む必要があります)。この辺りはkintoneではなくJavaScriptの決まりなので、そちらをお調べ下さい。

同じエラーを出さないようにするためには

var body = {
app: 'CTTIreport001'

と記載するか、

var CTTIreport001 = 'CTTIreport001';

var body = {
app: CTTIreport001

と記載する必要があります(例として出しているだけで、使用できないコードです)。

mls-hashimotoにより編集されました
0
Avatar
村松よしえ

mis-hashimoto様

コメントありがとうございます。

早速確認してみます。

基礎知識不足ですが、もっと勉強していきます。ありがとうございました。

0
Avatar
村松よしえ

mis-hashimoto様

その後、細かいスペルミス等を修正したところ、無事に5つのテーブルのコピーに成功しました!

本当にありがとうございました!!

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