如何从另一个App Kintone复制数据?

时间:2019-02-20 09:33:05

标签: javascript

我的要求是-

  1. Create带有按钮的应用程序
  2. 在按钮上单击源应用程序的show data

我的解决方案是从源应用程序获取数据,然后 POST 将其发送到主应用程序。 但是由于无法前进,所以我无法更新主应用程序。

Note: I must use JS customize.

我的代码如下:

let copyId = 112;
let appID = kintone.app.getId();
function getCopyAppData() {
    let body = {
      "app": copyId,
      "query": kintone.app.getQuery()
    };
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {return resp;})

      
 }
  function addDataToCurrentApp(data) {
    let body = {
      "app": appID,
      "records": data
    };
    return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', body).then(function(resp) {
      return resp;
    })
  }
getCopyAppData().then(function(data) {
  let events = ['app.record.create.show', 'app.record.edit.show', "app.record.index.show"];
    kintone.events.on(events, function(e) {
      if (document.getElementById('addData') !== null) {
          return;
      }
      let menuButton = document.createElement("button");
          menuButton.id = "addData";
          menuButton.innerHTML = "Add data";
      kintone.app.getHeaderMenuSpaceElement().appendChild(menuButton);
      menuButton.onclick = function() {
        addDataToCurrentApp(data);
      }
    })
})

2 个答案:

答案 0 :(得分:1)

已在Kintone Developer Program网站上回答了此问题。请看下面。 https://developer.kintone.io/hc/en-us/community/posts/360027677873-Copy-data-from-another-app 谢谢。

答案 1 :(得分:1)

似乎以前的评论已删除,所以我再次回答您的问题。

这是从Kintone中的另一个应用程序复制数据的示例代码。

(function() {
"use strict";
let copyId = 112;
let appID = kintone.app.getId();
function getCopyAppData() {
    let body = {
      "app": copyId,
      "query": kintone.app.getQuery()
    };
    // return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {return resp;})
    return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body).then(function(resp) {
        addDataToCurrentApp(resp.records); 
        return resp
    })


 }
  function addDataToCurrentApp(data) {


    var wData = [];
    for(var i =0;i<data.length;i++){
        var param2 = {
                      "str":{
                         "value":data[i].str.value
                    }
                }
        wData.push(param2);
    }

//        wData.push(data[i]);



    let body = {
      "app": appID,
      "records":wData
    };

    return kintone.api(kintone.api.url('/k/v1/records', true), 'POST', body).then(function(resp) {
      return resp;
    },function(err) {
        console.log(err);
    })
  }
// getCopyAppData().then(function(data) {
  let events = ['app.record.create.show', 'app.record.edit.show', "app.record.index.show"];
    kintone.events.on(events, function(e) {
      if (document.getElementById('addData') !== null) {
          return;
      }
      let menuButton = document.createElement("button");
          menuButton.id = "addData";
          menuButton.innerHTML = "Add data";
      kintone.app.getHeaderMenuSpaceElement().appendChild(menuButton);
      menuButton.onclick = function() {
        // addDataToCurrentApp(data);
        getCopyAppData();
          }
        })
    // })     
})();

FYI,在类似情况下,我看到用户陷入错误代码GAIA_DA02中。 这是由于太多的进程同时运行。
在这种情况下,请考虑以下因素,以帮助您避免同类错误。
•减少每个应用程序中的字段和注册记录的数量,以使处理诸如记录更新之类的时间不会太长。
•拆分API请求并避免重复处理时间
•简化您的应用设置,例如设置权限,使用复杂设置等。
•无法更新的错误记录应留作重试处理,然后在其他更新处理和时间不重叠的时候重试。

此外,在Kintone开发人员社区网站上也有类似的询问,因此请仔细阅读以供参考。 https://developer.kintone.io/hc/en-us/community/posts/360027677873-Copy-data-from-another-app

我希望这对您有帮助