데이터 수집 귀찮게에서 프로그램을 작성하십시오.
소개
나는 세미나에서 통계 경제를 연구하고 있으며, 매일 엑셀과 스프레드 시트와 망설이고 있습니다.
그 중에서 복잡한 필터링이나 검색을 기존 기능만으로는 할 수 없었던 것이 있었기 때문에,
이때 프로그램 쓰는 편이 「편하고 빠르지 않을까」라고 생각하고 Node.js를 이용해 보았습니다.
또 당초는 GAS로 할까라고 생각하고 있었습니다만, 향후 데이터 수집으로 스크래핑을 하기 위해 크롤러등을 사용하는 것을 생각해 Node.js로 통일하기로 했습니다.
(VBA를 0에서 만지는 시간이 없었기 때문에 이번은 패스입니다,,,)
 이 기사에서 이해
Node.js에서 엑셀 파일을 처리하는 방법
 이번에
이번에는 특허 데이터를 사용하여 그 중에서 특정 기업
①특허총출원수
②특허공동출원수
③특허 단독 출원수
를 각각 계산한다는 것입니다.
엑셀 등의 기존 기능에서는 특허 총 출원수를 필터나 검색을 이용하여 구할 수 있습니다만, 공동 출원인지 단독 출원인지를 구별하기 위해서는 해당 셀과 전후의 셀 상태와 비교할 필요가 있다 그래서 프로그램을 쓰는 다른 것 같았습니다 (아마).
아래의 그림과 같이 되어 있고, 공란 개소가 있는 경우 전후의 특허와 같은 것 즉 공동 출원하고 있다고 볼 수 있다고 하는 견해입니다.
 
그래서 로직으로서는 이하입니다.
①검색시에 걸리는 수→총출원수
② 타이틀(변수명)이 있다→다음 셀의 타이틀이 공란인→공동 출원수
③ 타이틀이 있다→다음 셀의 타이틀이 공란이 아니다→단독 출원수
④제목 없음 → 공동출원수
이에 따라 구현하면
 
2~3초만에 처리가 끝나 결과를 출력해 주었습니다.
 환경
macOS Catalina 10.15.4
npm: 6.4.1
node: v10.15.3
 구현
구현 자체는 어렵지 않고, 거의 Node.js에서 엑셀 파일을 어떻게 취급하는가 하는 것이라고 생각합니다만, 모듈이 준비되어 있어 그것을 JSON 객체로 치환할 수 있으므로 간단하다고 생각합니다!
참고 기사나 공식 리포지토리의 링크를 게재해 두므로 그쪽에서 확인해 봐 주세요.
 Node.js에서 Excel 파일 읽기 / 쓰기
 리포지토리
const XLSX = require("xlsx");
// 対象ファイルの読み込み
const book = XLSX.readFile("Sample.xlsx");
// 対象シートの読み込み
const sheet = book.Sheets["Results"];
// JSONオブジェクトとして取得
let sheet_json = XLSX.utils.sheet_to_json( sheet );
//検索したい企業のID
const searchCompanyId = "JP9011101031552";
//固定変数名
const APPLICANT_BVD_ID_NUMBER_VALIABLE = "Applicant(s) BvD ID Number(s)"
const TITLE_VALIABLE = "Title"
var jointPatentNumber = 0;
var simplePatentNumber = 0;
var totalPatentNumber = 0;
let cellNumber = 0;
searchCompanyId(searchCompanyId);
function serchPatentNumber(id) {
    for( let cell of sheet_json){
        cellNumber++;
        if(cell[APPLICANT_BVD_ID_NUMBER_VALIABLE] == id) {
            totalPatentNumber++;
            if (cell[TITLE_VALIABLE] == undefined) {
                //共同特許の場合:タイトルが空欄ということは共同出願としてみなすことができる
                jointPatentNumber++;
            } else {
                var nextCell = sheet_json[cellNumber+1];
                if (nextCell[TITLE_VALIABLE] == undefined) {
                    //共同特許の場合:現在のセルの特許タイトルがあったとしも、次のセルの特許タイトルがない場合共同特許としてみなすことができる
                    jointPatentNumber++;
                } else {
                    //単独同特許の場合:現在のセルの特許タイトルがあり、次のセルの特許タイトルもある場合単独特許としてみなすことができる
                    simplePatentNumber++;
                }
            }
        }
    }
    console.log("特許総出願数:" + totalPatentNumber);
    console.log("特許共同出願数:" + jointPatentNumber);
    console.log("特許単独出願数:" + simplePatentNumber);
}
 끝에
한 번 이런 프로그램을 써버리면 쓸 수 있고, 자신 취향에 커스터마이즈 할 수 있기 때문에 좋았다고 생각했습니다.
만약 다른 사람의 참고도 되면 좋다고 생각합니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(데이터 수집 귀찮게에서 프로그램을 작성하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/shumatsukishu/items/86c8415a3a052de9e117
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Node.js에서 엑셀 파일을 처리하는 방법
이번에
이번에는 특허 데이터를 사용하여 그 중에서 특정 기업
①특허총출원수
②특허공동출원수
③특허 단독 출원수
를 각각 계산한다는 것입니다.
엑셀 등의 기존 기능에서는 특허 총 출원수를 필터나 검색을 이용하여 구할 수 있습니다만, 공동 출원인지 단독 출원인지를 구별하기 위해서는 해당 셀과 전후의 셀 상태와 비교할 필요가 있다 그래서 프로그램을 쓰는 다른 것 같았습니다 (아마).
아래의 그림과 같이 되어 있고, 공란 개소가 있는 경우 전후의 특허와 같은 것 즉 공동 출원하고 있다고 볼 수 있다고 하는 견해입니다.
 
그래서 로직으로서는 이하입니다.
①검색시에 걸리는 수→총출원수
② 타이틀(변수명)이 있다→다음 셀의 타이틀이 공란인→공동 출원수
③ 타이틀이 있다→다음 셀의 타이틀이 공란이 아니다→단독 출원수
④제목 없음 → 공동출원수
이에 따라 구현하면
 
2~3초만에 처리가 끝나 결과를 출력해 주었습니다.
 환경
macOS Catalina 10.15.4
npm: 6.4.1
node: v10.15.3
 구현
구현 자체는 어렵지 않고, 거의 Node.js에서 엑셀 파일을 어떻게 취급하는가 하는 것이라고 생각합니다만, 모듈이 준비되어 있어 그것을 JSON 객체로 치환할 수 있으므로 간단하다고 생각합니다!
참고 기사나 공식 리포지토리의 링크를 게재해 두므로 그쪽에서 확인해 봐 주세요.
 Node.js에서 Excel 파일 읽기 / 쓰기
 리포지토리
const XLSX = require("xlsx");
// 対象ファイルの読み込み
const book = XLSX.readFile("Sample.xlsx");
// 対象シートの読み込み
const sheet = book.Sheets["Results"];
// JSONオブジェクトとして取得
let sheet_json = XLSX.utils.sheet_to_json( sheet );
//検索したい企業のID
const searchCompanyId = "JP9011101031552";
//固定変数名
const APPLICANT_BVD_ID_NUMBER_VALIABLE = "Applicant(s) BvD ID Number(s)"
const TITLE_VALIABLE = "Title"
var jointPatentNumber = 0;
var simplePatentNumber = 0;
var totalPatentNumber = 0;
let cellNumber = 0;
searchCompanyId(searchCompanyId);
function serchPatentNumber(id) {
    for( let cell of sheet_json){
        cellNumber++;
        if(cell[APPLICANT_BVD_ID_NUMBER_VALIABLE] == id) {
            totalPatentNumber++;
            if (cell[TITLE_VALIABLE] == undefined) {
                //共同特許の場合:タイトルが空欄ということは共同出願としてみなすことができる
                jointPatentNumber++;
            } else {
                var nextCell = sheet_json[cellNumber+1];
                if (nextCell[TITLE_VALIABLE] == undefined) {
                    //共同特許の場合:現在のセルの特許タイトルがあったとしも、次のセルの特許タイトルがない場合共同特許としてみなすことができる
                    jointPatentNumber++;
                } else {
                    //単独同特許の場合:現在のセルの特許タイトルがあり、次のセルの特許タイトルもある場合単独特許としてみなすことができる
                    simplePatentNumber++;
                }
            }
        }
    }
    console.log("特許総出願数:" + totalPatentNumber);
    console.log("特許共同出願数:" + jointPatentNumber);
    console.log("特許単独出願数:" + simplePatentNumber);
}
 끝에
한 번 이런 프로그램을 써버리면 쓸 수 있고, 자신 취향에 커스터마이즈 할 수 있기 때문에 좋았다고 생각했습니다.
만약 다른 사람의 참고도 되면 좋다고 생각합니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(데이터 수집 귀찮게에서 프로그램을 작성하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/shumatsukishu/items/86c8415a3a052de9e117
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
macOS Catalina 10.15.4
npm: 6.4.1
node: v10.15.3
구현
구현 자체는 어렵지 않고, 거의 Node.js에서 엑셀 파일을 어떻게 취급하는가 하는 것이라고 생각합니다만, 모듈이 준비되어 있어 그것을 JSON 객체로 치환할 수 있으므로 간단하다고 생각합니다!
참고 기사나 공식 리포지토리의 링크를 게재해 두므로 그쪽에서 확인해 봐 주세요.
 Node.js에서 Excel 파일 읽기 / 쓰기
 리포지토리
const XLSX = require("xlsx");
// 対象ファイルの読み込み
const book = XLSX.readFile("Sample.xlsx");
// 対象シートの読み込み
const sheet = book.Sheets["Results"];
// JSONオブジェクトとして取得
let sheet_json = XLSX.utils.sheet_to_json( sheet );
//検索したい企業のID
const searchCompanyId = "JP9011101031552";
//固定変数名
const APPLICANT_BVD_ID_NUMBER_VALIABLE = "Applicant(s) BvD ID Number(s)"
const TITLE_VALIABLE = "Title"
var jointPatentNumber = 0;
var simplePatentNumber = 0;
var totalPatentNumber = 0;
let cellNumber = 0;
searchCompanyId(searchCompanyId);
function serchPatentNumber(id) {
    for( let cell of sheet_json){
        cellNumber++;
        if(cell[APPLICANT_BVD_ID_NUMBER_VALIABLE] == id) {
            totalPatentNumber++;
            if (cell[TITLE_VALIABLE] == undefined) {
                //共同特許の場合:タイトルが空欄ということは共同出願としてみなすことができる
                jointPatentNumber++;
            } else {
                var nextCell = sheet_json[cellNumber+1];
                if (nextCell[TITLE_VALIABLE] == undefined) {
                    //共同特許の場合:現在のセルの特許タイトルがあったとしも、次のセルの特許タイトルがない場合共同特許としてみなすことができる
                    jointPatentNumber++;
                } else {
                    //単独同特許の場合:現在のセルの特許タイトルがあり、次のセルの特許タイトルもある場合単独特許としてみなすことができる
                    simplePatentNumber++;
                }
            }
        }
    }
    console.log("特許総出願数:" + totalPatentNumber);
    console.log("特許共同出願数:" + jointPatentNumber);
    console.log("特許単独出願数:" + simplePatentNumber);
}
 끝에
한 번 이런 프로그램을 써버리면 쓸 수 있고, 자신 취향에 커스터마이즈 할 수 있기 때문에 좋았다고 생각했습니다.
만약 다른 사람의 참고도 되면 좋다고 생각합니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(데이터 수집 귀찮게에서 프로그램을 작성하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/shumatsukishu/items/86c8415a3a052de9e117
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
const XLSX = require("xlsx");
// 対象ファイルの読み込み
const book = XLSX.readFile("Sample.xlsx");
// 対象シートの読み込み
const sheet = book.Sheets["Results"];
// JSONオブジェクトとして取得
let sheet_json = XLSX.utils.sheet_to_json( sheet );
//検索したい企業のID
const searchCompanyId = "JP9011101031552";
//固定変数名
const APPLICANT_BVD_ID_NUMBER_VALIABLE = "Applicant(s) BvD ID Number(s)"
const TITLE_VALIABLE = "Title"
var jointPatentNumber = 0;
var simplePatentNumber = 0;
var totalPatentNumber = 0;
let cellNumber = 0;
searchCompanyId(searchCompanyId);
function serchPatentNumber(id) {
    for( let cell of sheet_json){
        cellNumber++;
        if(cell[APPLICANT_BVD_ID_NUMBER_VALIABLE] == id) {
            totalPatentNumber++;
            if (cell[TITLE_VALIABLE] == undefined) {
                //共同特許の場合:タイトルが空欄ということは共同出願としてみなすことができる
                jointPatentNumber++;
            } else {
                var nextCell = sheet_json[cellNumber+1];
                if (nextCell[TITLE_VALIABLE] == undefined) {
                    //共同特許の場合:現在のセルの特許タイトルがあったとしも、次のセルの特許タイトルがない場合共同特許としてみなすことができる
                    jointPatentNumber++;
                } else {
                    //単独同特許の場合:現在のセルの特許タイトルがあり、次のセルの特許タイトルもある場合単独特許としてみなすことができる
                    simplePatentNumber++;
                }
            }
        }
    }
    console.log("特許総出願数:" + totalPatentNumber);
    console.log("特許共同出願数:" + jointPatentNumber);
    console.log("特許単独出願数:" + simplePatentNumber);
}
한 번 이런 프로그램을 써버리면 쓸 수 있고, 자신 취향에 커스터마이즈 할 수 있기 때문에 좋았다고 생각했습니다.
만약 다른 사람의 참고도 되면 좋다고 생각합니다.
Reference
이 문제에 관하여(데이터 수집 귀찮게에서 프로그램을 작성하십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shumatsukishu/items/86c8415a3a052de9e117텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)