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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (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.)