maru1151
(マル)
November 15, 2024, 6:01am
1
アクセス権のないアプリから一部の情報をGETしたいと考えております。
コミュニティ等を検索したところkintone.proxyを利用することにより、アクセス可能であるが、条件を絞る方法もGETの場合はアプリIDや条件をurlに含めないといけないなど、色々と制限などがあるようです。
最終的にアクセスに成功した時の参考となるソースが分からず苦戦しております。
色々調べた中で 別ドメインの kintone のレコードを取得(kintone JavaScript API) | potara 「# 別ドメインの kintone のレコードを取得(kintone JavaScript API)」に行きつき、このソースを参考にテストしておりますが、
エラー↓が発生しております。
show.js:147 Uncaught SyntaxError: Unexpected token ‘<’, "<!DOCTYPE "... is not valid JSON
at JSON.parse ()
const { records, totalCount, message } = JSON.parse(res[0]);←このソース上でエラーが発生します。
エラーの原因と解消方法が分かりません、そもそも、条件を指定して、アクセス権がないアプリに対してはアクセスは難しいでしょうか?
よろしくお願い致します。
貼られているURLにおける「GETの場合」を私もやってみましたが、正常に値が取れました。変更した個所は4か所です。
1:「xxx.cybozu.com 」 のxxxを自身のkintoneのurlに合わせる
例:const domain = “lemonsample.cybozu.com ”
2:「app」のxxxをデーターを読み取りたいIDに変更する
例:const app = “10”
3:アプリ10で発行したApi-Tokenを入力する
例:“X-Cybozu-API-Token”: “12346579Abctesttestaaaiiiuueeoooo”,
4:クエリーを修正する
例:const query = encodeURIComponent(‘部署名 = “レモン部”’);
また、記載されたエラーがどのような時に出るのか試したところ、上記「1」のdomainの値に間違いがあるときに確認できました。他のケースにおいても出ることはあるかもしれませんがご参考にしてください。
エラーの意味としてはJSON形式に変更できなかったと言ってますが、なぜ変更できないかというと正しいURLにアクセス出来ていないからだと思います。
maru1151
(マル)
November 18, 2024, 12:32am
3
lemon_sour様、アドバイスありがとうございました。
私も何度もkintoneのurlも確認しましたが間違ってないと思っております。
バッククォートもそのままの状態でまるごどコピーし、私も1,2,3,4ケ所とconst queryString = ?app=${app}&query=${query}&fields[0]=$id&fields[1]=$revision&fields[2]=会社名&totalCount=true
;
queryString変数の会社名を自分の環境であるHINNAMEと変更し自分の環境に合わせて実行していました。
途中の変数であるqueryStringをコンソールに表示してみました。
他に何か確認等する方法や方策があればアドバイス頂けると大変助かります。
よろしくお願い致します。
(queryString)
?app=180&query=HINCODE%20%3D%20%22011054%22&fields[0]=$id&fields[1]=$revision&fields[2]=HINNAME&totalCount=true
[Violation] Forced reflow while executing JavaScript took 32ms
show.js:147 Uncaught SyntaxError: Unexpected token ‘<’, "<!DOCTYPE "... is not valid JSON
at JSON.parse ()
at 見積書.js:312:55
下記、コーディングしております。
kintone.events.on(["app.record.detail.show"], async (event) => {
const domain = "xxxxxxxx.cybozu.com";
const app = "180";
const headers = {
"X-Cybozu-API-Token": "123456789abcdefghigklm",
};
const query = encodeURIComponent('HINCODE = "011054"');
const url = `https://${domain}/k/v1/records.json`;
// console.log(url)
const queryString = `?app=${app}&query=${query}&fields[0]=$id&fields[1]=$revision&fields[2]=HINNAME&totalCount=true`;
console.log(queryString)
const res = await kintone.proxy(`${url}${queryString}`, "GET", headers, {});
const { records, totalCount, message } = JSON.parse(res[0]);
if (res[1] === 200) {
console.log(records);
console.log(totalCount);
} else {
console.log(message);
}
return event;
});