山崎さん、こんにちは。
考え方を含めてお答えします。
レコードの値の取得が「kintone.app.record.get」で実現できていますね。
同じように値のセットができるAPIがないか、 JavaScript APIの一覧 から探してみてください。
「値の取得」の下に「値のセット」(kintone.app.record.set)が見つかるかと思います。
kintone.app.record.set の詳細を確認してみると、利用できる画面は下記となっています。
山崎さんのコードでは、レコード詳細画面(‘app.record.detail.show’)で動くように書かれているので、
「kintone.app.record.set」を使うことはできません。
※copyボタンをレコード詳細画面ではなくレコード追加・編集画面で使いたい、ということでしたらこのAPIが使えます。
具体的なサンプルコードはこのコメントの最後に記載してあります。
他の方法を探してみましょう。
JavaScript APIの一覧には、他にフィールド値を更新できそうなものがないので、REST APIの一覧 を確認してみます。
レコード(1件) 更新 が使えそうです。(REST API 一覧(レコード)の3行目)
レコードの更新(1件)のページを開き、「JavaScriptサンプル」という項目を確認してください。サンプルコードが載っています。
var body = {
"app": 1,
"id": 1001,
"record": {
"文字列__1行": {
"value": "ABC"
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log(error);
});
bodyという変数の中に、対象レコードの情報を入れて渡していますね。(詳細はドキュメントを読んでください)
アプリID、レコードID、更新するフィールド名とその値が指定されているので、自分の環境に合わせて書き換えてください。
※アプリIDとレコードIDは、それぞれ取得するAPIがあるのでJavaScript APIの一覧 から探してみてください。
これでレコードの値を更新できます。が、今開いている画面は自分でリロードしないと表示が変わらない、という状態になりますので、
更新できたら画面のリロード処理も入れてあげてください。
(function() {
"use strict";
kintone.events.on(['app.record.detail.show'], function(event) {
var mySpaceFieldButton = document.createElement('button');
mySpaceFieldButton.id = 'copy_button';
mySpaceFieldButton.innerHTML = 'copy2';
mySpaceFieldButton.onclick = function() {
var fieldValue = '';
var rec = kintone.app.record.get();
if (rec) {
fieldValue = rec.record.test1.value;
}
var body = {
"app": kintone.app.getId(),
"id": kintone.app.record.getId(),
"record": {
"test2": {
"value": fieldValue
}
}
};
kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body, function(resp) {
// success
console.log(resp);
location.reload(true); // 画面をリロード
}, function(error) {
// error
console.log(error);
});
}
kintone.app.record.getSpaceElement('my_space_field').appendChild(mySpaceFieldButton);
});
})();
なお、レコード編集中にボタン操作で値を反映したいという場合のサンプルは下記のとおりです。
レコード追加画面の表示イベント、編集画面の表示イベントを利用して kintone.app.record.set で値の書き換えができます。
(function() {
"use strict";
kintone.events.on(['app.record.edit.show', 'app.record.create.show'], function(event) {
var mySpaceFieldButton = document.createElement('button');
mySpaceFieldButton.id = 'copy_button';
mySpaceFieldButton.innerHTML = 'copy';
mySpaceFieldButton.onclick = function() {
var fieldValue = '';
var rec = kintone.app.record.get();
if (rec) {
fieldValue = rec.record.test1.value;
}
rec.record.test2.value = fieldValue;
kintone.app.record.set(rec);
}
kintone.app.record.getSpaceElement('my_space_field').appendChild(mySpaceFieldButton);
});
})();