javascript - 如何从其他 App Kintone 复制数据?
问题描述
我的要求是——
Create
一个带有按钮的应用程序- 单击
show data
源应用程序的按钮。
我的解决方案是从源 App获取数据并将其发布到主 App。但是我无法更新我的主应用程序,因此我在前进时遇到了麻烦。
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);
}
})
})
解决方案
好像之前的评论被删除了,所以让我再次回答你的问题。
这是从 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();
}
})
// })
})();
仅供参考,在类似的情况下,我看到一个用户卡在错误代码 GAIA_DA02 中。这是由于同时运行的进程太多。
在这种情况下,请考虑以下内容来帮助您避免同样的错误。
•减少每个应用程序中的字段和注册记录的数量,以便处理记录更新等处理时间不会太长。
•拆分API请求,避免重复处理时间
•简化您的应用设置,例如设置权限,设置复杂的设置等
•错误无法更新的记录应留待重试处理,然后一次重试当其他更新处理和时间不重叠时。
另外,在 Kintone 开发者社区网站上也有类似的询问,请查看以供参考。 https://developer.kintone.io/hc/en-us/community/posts/360027677873-Copy-data-from-another-app
我希望这有帮助
推荐阅读
- python - 在 Mac 上更改 python tkinter 按钮颜色会使按钮单击不可见?
- sql - 加入组 PySpark - SQL 到 Pysaprk
- c# - c# Generic Type System - 自引用泛型类型
- http - 有没有办法使用不和谐 API 中的机器人令牌获取机器人数据?
- node.js - 如何解决媒体翻译 GCP API 中的音频编码错误?
- javascript - 通过数据库插入的具有不同尺寸的图像的宽度和高度 HTML 属性
- amazon-web-services - 嵌套对象上的 Terraform 循环
- python - Jupyter Notebook Python 项目:使用 Plotly-Dash 进行股票分析
- docker - 权限被拒绝尝试使用 jenkins 和 kubernetes 构建 mkdir
- sql - 使用PL/SQL绕过JSON对象,在Oracle中以键值格式输出所有数据