お世話になっております。
一覧のレコード参照権限を持たないユーザーが、
アプリの一覧から追加ボタンを押して保存を行った際、
指定したレコードが見つかりませんというエラーページに遷移しますが、
このページを表示させずに、
全く別のページ(登録は完了しましたというようなページ)に遷移させたり、
レコードの表示されていない一覧に遷移させたりすることは可能でしょうか。
恐れ入りますが、ご教示ください。
お世話になっております。
一覧のレコード参照権限を持たないユーザーが、
アプリの一覧から追加ボタンを押して保存を行った際、
指定したレコードが見つかりませんというエラーページに遷移しますが、
このページを表示させずに、
全く別のページ(登録は完了しましたというようなページ)に遷移させたり、
レコードの表示されていない一覧に遷移させたりすることは可能でしょうか。
恐れ入りますが、ご教示ください。
三宅さん
武井です。
その問題たまにありますよね。
一番単純に考えるのであれば、
レコード権限として、「すべてのレコード」に対し、「作成者」に閲覧権限を付与する方法が良いと思います。
ただ、仮に作成者であってもレコードは見せたくないという場合は、
少々面倒だと思いますが、以下のような流れで別のページに遷移できるかと思います。
kintone.events.on(['app.record.create.submit.success'], function(event) {
(ここでレコードのアクセス権を取得)
if (ログインユーザーに閲覧権限があるか) {
location.href = "http://www.yahoo.co.jp";
death();
}
});
なお、レコードのアクセス権の取得については下記を参照ください。
■レコードのアクセス権の取得
ご回答有難うございます。
一点、重要なことを言い忘れておりました。
スマートフォンで操作をしたいと考えておりまして、
イベントが限られている為、困っている状況です。
保存ボタンを押下した際のイベントで、
追加が終了したタイミングで強制的に別ページに遷移できればとおもうのですが、
イベントがない為、処理を記入できる場所がありません。
何か別の方法があればと思うのですが、
やはり無理でしょうか。
そうなると、あとはkintoneの標準保存ボタンを一切使わず、
どこかに自作ボタンを配置し、
常にレコード登録はそのボタン押下イベントによるAPIのPOSTによって行い、
そのPOSTが完了したタイミングで別ページに遷移させるとかですかね。
その場合は、閲覧権限のあるユーザーについても後処理を考慮する必要がありますけれども。
POSTについては以下参照です。
■レコードの登録(POST)
ご回答有難うございました。
検討いたします。
追記で質問させていただきます。
よろしくお願いいたします。
先日回答いただいたボタンを別途作成し、APIで登録処理を行う処理を実装しましたが、
ルックアップの項目があると項目を入力して下さいというチェックが走り、
登録ができませんが、
ルックアップ項目を外せない場合、別の方法はありますでしょうか。
よろしくお願いいたします。
おっしゃっている意味がよくわかっていませんが、
ルックアップフィールドがあるからといってPOSTできないということはありません。
また、ルックアップされているフィールドがあるからPOSTできないということもありません。
現状下記のようなコードで実装しています。
(一部抜粋しております)
//ボタンクリック時イベント
myIndexButton.onclick = function () {
window.alert(‘登録しますか?’);
var reco = getFieldData();
// レコードに追加する内容
var params = {
“app”: event.appId,
“record”: {
“貴社名”: { “value”: reco[‘record’][‘貴社名’][‘value’]},
“ルックアップ_0”: { “value”: reco[‘record’][‘ルックアップ_0’][‘value’]},
“お名前”: { “value”: reco[‘record’][‘お名前’][‘value’]},
“メールアドレス”: { “value”: reco[‘record’][‘メールアドレス’][‘value’]},
“ラジオボタン”: { “value”: reco[‘record’][‘ラジオボタン’][‘value’]},
“ドロップダウン”: { “value”: reco[‘record’][‘ドロップダウン’][‘value’]},
“テキストエリア”: { “value”: reco[‘record’][‘テキストエリア’][‘value’]}
}
};
// URI、メソッド、追加する内容の指定
kintone.api(
kintone.api.url(‘/k/v1/record’, true),
‘POST’,
params,
// コールバック
function(resp) {
//処理が成功したとき
location.reload(true);
location.href = “http://www.xxxx”;
},
// エラーバック
function(resp) {
// エラー処理
window.alert(“項目を入力して下さい”);
}
);
}
//■■■■■■■■■■■■■■■■■■■■■■■■■
// 現在の入力値を取得
//■■■■■■■■■■■■■■■■■■■■■■■■■
function getFieldData() {
var rec = kintone.mobile.app.record.get();
return rec;
}
ルックアップ項目がある画面なのですが、
画面上は項目が埋められている状態でボタンを押しますが、
画面の情報を取得した際ルックアップの項目だけが空の状態になります。
取得の方法が間違っているでしょうか?
画面からルックアップ項目を削除すれば最後まで処理が終了し登録完了となっております。
お手数おかけいたしますが、ご教示ください。
私が試した限り上記コードでも登録できます。
考えられるのは、アプリのルックアップフィールドコードとプログラムのルックアップフィールドコードが一致していない辺りでしょう。
それでもできないのであれば、デバッグしてみてください。
デバッグの方法は以下をご参考ください。
■動かない?そんな時はデバッグをしてみよう!入門編
返答有難うございます。
上記内容はスマートフォンからでも確認できましたか?
確かに私もパソコンからの操作ではできましたが、
スマートフォンからは登録はできていません。
水曜日 時間 13:07の書き込みにも書きましたが、スマートフォンからの操作を考えております。
ちなみにスマートフォンでもデバッグできるのですか?
いくつも質問して申し訳ありませんが、
ご回答お願いいたします。
返答有難うございます。
モバイル用のところにアップもしております。
ですので、ルックアップ項目のコード部分を削除すればスマートフォンでも登録ができている状態です。
もう一度確認してみます。
有難う御座いました。