調べてみたのですが見つからなかったので、ここで質問させて頂きます。
タイトル通りではあるのですが、
閲覧権限が無いユーザーで、APIで全レコードを取得しても、閲覧権限の無いレコードは取得できないみたいです。
それをどうにか権限関係なく全て取得する方法はございますでしょうか?
閲覧権限が無いユーザーがレコード登録時、特定のフィールドに入力した値が、他の全レコードのフィールドと重複するレコードがある場合はエラーを表示させようと思ったのですが、取得される対象が権限のある全レコードだけになってしまうので、同じデータのレコードが作られる可能性があります。
ちなみに、登録するフィールドAに対して、他のレコードの重複チェックするフィールドはA・B・Cなど複数となる為、フィールド設定の「値の重複を禁止する」チェックも使えません。
どうしようもない場合は仕方が無いと考えておりますが、何か方法がございましたらご教授ください。
APIトークン認証でリクエストを実行すれば、
権限がないユーザーでも、レコードをすべて取得することが可能です。
APIトークン認証でご希望の運用が可能か、確認してみてくださいー
「いいね!」 1
ご回答ありがとうございます。
おかげさまでAPIトークン認証の仕組みは少しは理解できたと思います。
これが上手くいけば運用可能と考えております。
しかし、現在自分が書いたコードに対して、自分なりにいろいろ修正を試してみたのですが全てエラーでうまく動きませんでした。
もしよろしければ、コードを修正するヒントでも頂ければ助かります。
よろしくお願い致します。
kintone.events.on(events, async (event) => {
let query = 〇〇; // 重複確認条件
// リクエストパラメータの設定
const params = {
app: kintone.app.getId(),
fields: ['$id'],
query: query
};
// 重複レコードのID取得
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then((resp) => {
// 重複レコードがあるか
if (resp.records.length > 0) {
// あればエラーメッセージ
event.error = 'エラー';
return event;
}
});
});
こんにちは!
どんなエラーがどこに出たか分からないのと、
コードが一部だとなんとも言えないので・・・
ひとまずデバッグのやり方を学ばれると良いと思います。
「いいね!」 1
jurippe様
ご回答ありがとうございます。
デバッグはしていたのですが、複数のパターンで書いてみましたがそれぞれ別のエラーが表示されておりました。
自分の勉強不足で書き方を理解できていないせいでした。
とりあえず先に記載したAPIトークン実装前のコードを下のように書きなおしたところ、希望の動作となりました。
ご対応ありがとうございました。
let events=['app.record.create.submit', 'app.record.edit.submit', 'app.record.index.edit.submit'];
// 保存前イベント
kintone.events.on(events, async (event) => {
let query = 〇〇; // 重複確認条件
// URL設定
const url = location.origin + `/k/v1/records.json`;
// ヘッダー設定
const headers = {
'X-Cybozu-API-Token': 'APIトークン',
'Content-Type': 'application/json',
'X-HTTP-Method-Override': 'GET',
};
// リクエストパラメータの設定
const params = {
app: kintone.app.getId(),
fields: ['$id'],
query: query
};
// 重複レコードのID取得
return kintone.proxy(url, 'POST', headers, params).then((res) => {
// レスポンス取得
const { records, totalCount, message } = JSON.parse(res[0]);
// 重複レコードがあるか
if (records.length > 0) {
// あればエラーメッセージ
event.error = 'エラー';
return event;
}
});
});
「いいね!」 2
このトピックは最後の返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。