【詳細画面表示】閲覧権限のみユーザーでも値変更が可能なボタン

いつもお世話になっております。

レコード詳細画面において、下記コードでボタンの実装と、ボタン押下による値の変更はできましたが、アクセス権のないユーザーでも値の更新ができるようにしたいです。

どなたか是非ともご教授頂ければ幸いです。

よろしくお願いいたします。

 

(function() {

“use strict”;

 

// 一覧表示時処理

kintone.events.on(‘app.record.detail.show’, function(event) {

var record = event.record;

var appId = kintone.app.getId();

 

// ボタン増殖防止

if (document.getElementById(‘ボタン1’) !== null) {

return;

}

// ボタンの作成

var 更新ボタン = document.createElement(‘button’);

var hyouji = ‘2019’;

更新ボタン.id = ‘ボタン1’;

更新ボタン.innerHTML = ‘表示年度変更’;

更新ボタン.onclick = function() { // ボタンクリック時の処理

alert(‘更新ボタンクリック’);

 

var params = {

“app”: appId,

“id”: kintone.app.record.getId(),

“record”: {

“表示年度”: {

“value”: hyouji

}

}

};

 

kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, params).then(function(resp) {

// 成功時

alert(“更新成功”);

location.reload(); // 成功したら画面を更新

}, function(resp) {

// 失敗時

alert(“更新失敗”);

});

};

kintone.app.record.getHeaderMenuSpaceElement().appendChild(更新ボタン); // ボタン表示

});

 

})();

kintone.proxyとAPI-Tokenを使えば実現可能だと思います。

トークンとサブドメインを変えていただいたら動くと思います!

var token = "発行したトークン";
var header = {
"X-Cybozu-API-Token": token,
"Content-Type": "application/json"
};
var body = {
app: appId,
id: kintone.app.record.getId(),
record: {
表示年度: {
value: hyouji
}
}
};
kintone.proxy("https://{subdomain}.cybozu.com/k/v1/record.json", "PUT", header, body).then(function(resp) {
console.log(resp);
}).catch(function(error) {
console.log(error);
});

TK様

実現できました!!!本当にありがとうございます!!!

 

コミュニティの過去投稿を何度も検索して、何となくkintone.proxyやAPIトークン必要性を理解はしていましたが、

javascript初心者のため、どこにどう書いてどうやって活かすか、答えにたどり着けない状態が続いていました。

特にkintone.proxyについては参考になる(理解できる?)Tipsが見当たらないため、

もしよろしければ後学のため、何か参考になるサイト等がありましたら教えていただけると幸いです。

 

 

鈴木様

解決できてよかったです!

 

確かにこの辺の書き方は公式にも詳しく載ってないので難しいですよねー。。。

kintone.apiではリクエストヘッダを付けられないからkintone.proxyを使う、くらいの認識で使っちゃってますね。

参考になるサイトはこれといって浮かばないのですが、やっぱり公式のページが一番だと思います。

curlからのアプローチとかを勉強してみると理解が深まると思います!

TK様

アドバイスありがとうございます。

なるほど、curlコマンドですね。

今後はcurlにもチャレンジしてみます。

また分からないことがあった際には、ご指導いただけると幸いです。

ありがとうございました。