kintone 앱에 qiita 기사 정보 표시
할 일
kintone 앱에 설치한 버튼을 눌러 등록한 Qiita의 개인 액세스 토큰에 연결하는 기사 정보를 취득하고, 기사의 title·view count·LMGT count·url을 테이블에 표시할 수 있었습니다.
이런 느낌.
동기
Qiita에 블로그를 올렸습니다만, 현재의 view와 LMGT의 수가 신경이 쓰이네요. 그러나 Qiita의 내 페이지에는 LMGT 만 표시됩니다. 그래서 버튼 하나로 얻을 수 있도록 kintone으로 앱을 만들었습니다.
*이런 때에 GUI 포함 곧바로 작성할 수 있는 kintone은 매우 편리하다고 생각하고 있습니다. (작업 시간은 총 2시간 정도)
사전 준비
Qiita에 블로그를 올렸습니다만, 현재의 view와 LMGT의 수가 신경이 쓰이네요. 그러나 Qiita의 내 페이지에는 LMGT 만 표시됩니다. 그래서 버튼 하나로 얻을 수 있도록 kintone으로 앱을 만들었습니다.
*이런 때에 GUI 포함 곧바로 작성할 수 있는 kintone은 매우 편리하다고 생각하고 있습니다. (작업 시간은 총 2시간 정도)
사전 준비
포인트 (라고 말하는 것보다 빠진 부분)
GET/api/v2/authenticated_user/items에서 한 번에 얻을 수 있다고 생각했고, 같은 response에서는 page_views_count가 null가 되어 버렸습니다./api/v2/authenticated_user/items에서 기사 ID를 얻고 기사 ID마다/api/v2/items/를 다시 실행했습니다.
*무언가 설정이 빠졌습니까? ···
참고
Qiita API v2 문서 : htps : // m / ap / v2 / cs # 게 t ap v2 m m_m d
도전
잊지 않고 버튼을 누르면, kintone의 기능으로 추이를 그래프 표시 할 수 있을 것 같습니다만, 절대 잊네요. 어떠한 방법으로 자동 취득 할 수 있도록 언젠가하고 싶습니다.
코드(java script)
(function() {
'use strict';
kintone.events.on('app.record.detail.show', function(event) {
let auth = event.record.token.value;
auth = "Bearer " + auth;
//ボタン作成
let myMenuButton = document.createElement('button');
myMenuButton.id = 'my_menu_button';
myMenuButton.innerHTML = '情報取得';
//実行
myMenuButton.onclick = function() {
(async() => {
let user = await qiita_user(auth);
let table = await qiita_item(auth,user);
let recordId = event.record.$id.value;
let resp = await put_record(recordId,table);
})();
};
kintone.app.record.getSpaceElement("space").appendChild(myMenuButton);
});
})();
//qiitaユーザー情報一覧取得
async function qiita_user(auth){
let proxyUrl = "https://qiita.com/api/v2/authenticated_user/items";
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//qiita item情報一覧取得
async function qiita_item(auth,user){
let item_detail;
let table_detail = [];
for( let i = 0; i < user.length; i++ ){
item_detail = await qiita_detail(auth,user[i].id);
table_detail.push(await create_table(item_detail.title,item_detail.page_views_count,item_detail.likes_count,item_detail.url))
}
return table_detail;
}
//qiita記事詳細取得
async function qiita_detail(auth,item_id){
let proxyUrl = "https://qiita.com/api/v2/items/";
proxyUrl = proxyUrl + item_id;
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//record更新
async function put_record(recordId,table){
var body = {
'app': kintone.app.getId(),
'id': recordId,
'record': {"テーブル":{value:table}}
};
let resp = await kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body);
location.reload();
}
//テーブル作成
async function create_table(title,view,like,linc){
let bodydetail = [];
bodydetail =
{
"value":{
"title":{
"value":title
},
"view":{
"value":view
},
"LGMT":{
"value":like
},
"リンク":{
"value":linc
}
}
};
return bodydetail;
}
Reference
이 문제에 관하여(kintone 앱에 qiita 기사 정보 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Lastonemile/items/8d82274cba4b2f3cf864
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Qiita API v2 문서 : htps : // m / ap / v2 / cs # 게 t ap v2 m m_m d
도전
잊지 않고 버튼을 누르면, kintone의 기능으로 추이를 그래프 표시 할 수 있을 것 같습니다만, 절대 잊네요. 어떠한 방법으로 자동 취득 할 수 있도록 언젠가하고 싶습니다.
코드(java script)
(function() {
'use strict';
kintone.events.on('app.record.detail.show', function(event) {
let auth = event.record.token.value;
auth = "Bearer " + auth;
//ボタン作成
let myMenuButton = document.createElement('button');
myMenuButton.id = 'my_menu_button';
myMenuButton.innerHTML = '情報取得';
//実行
myMenuButton.onclick = function() {
(async() => {
let user = await qiita_user(auth);
let table = await qiita_item(auth,user);
let recordId = event.record.$id.value;
let resp = await put_record(recordId,table);
})();
};
kintone.app.record.getSpaceElement("space").appendChild(myMenuButton);
});
})();
//qiitaユーザー情報一覧取得
async function qiita_user(auth){
let proxyUrl = "https://qiita.com/api/v2/authenticated_user/items";
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//qiita item情報一覧取得
async function qiita_item(auth,user){
let item_detail;
let table_detail = [];
for( let i = 0; i < user.length; i++ ){
item_detail = await qiita_detail(auth,user[i].id);
table_detail.push(await create_table(item_detail.title,item_detail.page_views_count,item_detail.likes_count,item_detail.url))
}
return table_detail;
}
//qiita記事詳細取得
async function qiita_detail(auth,item_id){
let proxyUrl = "https://qiita.com/api/v2/items/";
proxyUrl = proxyUrl + item_id;
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//record更新
async function put_record(recordId,table){
var body = {
'app': kintone.app.getId(),
'id': recordId,
'record': {"テーブル":{value:table}}
};
let resp = await kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body);
location.reload();
}
//テーブル作成
async function create_table(title,view,like,linc){
let bodydetail = [];
bodydetail =
{
"value":{
"title":{
"value":title
},
"view":{
"value":view
},
"LGMT":{
"value":like
},
"リンク":{
"value":linc
}
}
};
return bodydetail;
}
Reference
이 문제에 관하여(kintone 앱에 qiita 기사 정보 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Lastonemile/items/8d82274cba4b2f3cf864
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(function() {
'use strict';
kintone.events.on('app.record.detail.show', function(event) {
let auth = event.record.token.value;
auth = "Bearer " + auth;
//ボタン作成
let myMenuButton = document.createElement('button');
myMenuButton.id = 'my_menu_button';
myMenuButton.innerHTML = '情報取得';
//実行
myMenuButton.onclick = function() {
(async() => {
let user = await qiita_user(auth);
let table = await qiita_item(auth,user);
let recordId = event.record.$id.value;
let resp = await put_record(recordId,table);
})();
};
kintone.app.record.getSpaceElement("space").appendChild(myMenuButton);
});
})();
//qiitaユーザー情報一覧取得
async function qiita_user(auth){
let proxyUrl = "https://qiita.com/api/v2/authenticated_user/items";
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//qiita item情報一覧取得
async function qiita_item(auth,user){
let item_detail;
let table_detail = [];
for( let i = 0; i < user.length; i++ ){
item_detail = await qiita_detail(auth,user[i].id);
table_detail.push(await create_table(item_detail.title,item_detail.page_views_count,item_detail.likes_count,item_detail.url))
}
return table_detail;
}
//qiita記事詳細取得
async function qiita_detail(auth,item_id){
let proxyUrl = "https://qiita.com/api/v2/items/";
proxyUrl = proxyUrl + item_id;
let headers = {
'Authorization':auth,
'Content-Type': 'application/json'
}
let body = await kintone.proxy(proxyUrl, 'GET',headers,"")
return JSON.parse(body[0]);
}
//record更新
async function put_record(recordId,table){
var body = {
'app': kintone.app.getId(),
'id': recordId,
'record': {"テーブル":{value:table}}
};
let resp = await kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', body);
location.reload();
}
//テーブル作成
async function create_table(title,view,like,linc){
let bodydetail = [];
bodydetail =
{
"value":{
"title":{
"value":title
},
"view":{
"value":view
},
"LGMT":{
"value":like
},
"リンク":{
"value":linc
}
}
};
return bodydetail;
}
Reference
이 문제에 관하여(kintone 앱에 qiita 기사 정보 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Lastonemile/items/8d82274cba4b2f3cf864텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)