KINTONのカスタムJavascriptでログインユーザー以外のユーザーで保存処理行いたいのですがそのようなこと可能でしょうか?
Tohru Akuzawa様
cstapの落合です。
REST APIを用いることで可能です。
ただし、保存したいユーザーの認証情報を知っている必要があるため、実際には使えないかもしれません。
Administratorの操作として保存させたい場合のみ、APIトークンを利用することで可能です。
落合さま
なるほど!
APIトークンでAdminで登録することができました。
助かります。
すいません勘違いしていました
kintone.api(‘/k/v1/record’, ‘PUT’, param );
の形式でコールしたいときですがどこにとトークンいれこむのでしょうか?
Tohru Akuzawa様
説明が不十分で申し訳ありません。
kintone.apiを使わずに直接REST APIを使います。
できると思っていてちょっと作ってみたのですが、302が返ってきてしまうのでちょっと調査します。
参考までに下記のようなソースです。
kintone.events.on('app.record.detail.show', function(event) {
var record = {
app: 100,
id: 1,
record: {
// record data
}
};
// リクエスト作成
var req = new XMLHttpRequest();
req.open('PUT', 'https://subdomain.cybozu.com/k/v1/record.json');
req.setRequestHeader('X-Cybozu-API-Token', 'BuBNIwbRRaUvr33nWXcfUZ5VhaFsJxN0xH4NPN92');
req.setRequestHeader('Content-Type', 'application/json');
req.onreadystatechange = function() {
if (req.readyState === 4) {
console.log(req.response);
}
};
// 送信
req.send(JSON.stringify(record));
});
落合さま
サンプルコードの記載有難うございます。
いただいたコードでKINTONのイベントハンドラではなく、
画面表示後のクリックボタンからコールすることで動作すること確認しました。
作業者には編集権限をなるべく渡したくないのですがあるタイミングで編集が必要だったのでどうしようかと思っていたのですがこれで実現できそうです。
大変助かりました、重ねてお礼申し上げます。
Tohru Akuzawa様
解決したようで良かったです。
クリックボタンからでしたら非同期で構わないと思いますので、XMLHttpRequestではなくkintone.proxyを利用することをお勧めいたします。
kintone.proxy(
‘https://subdomain.cybozu.com/k/v1/record.json’,
‘PUT’,
{
‘X-Cybozu-API-Token’: ‘BuBNIwbRRaUvr33nWXcfUZ5VhaFsJxN0xH4NPN92’,
‘Content-Type’: ‘application/json’
},
data,
function(body, status, headers) {
console.log(status, JSON.parse(body));
}
);
dataについては https://developers.cybozu.com/ja/kintone-api/apprec-updateapi.html#1
のリクエストボディの構造を参照してください。