【最新版】googlepatent連携・特許情報取得ツール「特許チュルチュル」V13(コード付き)
※2024/4/14
GASでScriptPropertiesクラスがサポート終了し
PropertiesService.getScriptProperties().getProperty();となりましたので
コード変更を行いました。
【ご利用イメージ】
出願番号のセルに番号を入れたら案件の情報をとってきます。
【目的】
公報番号を入れたら案件情報が出るスプレッドシートが欲しかった。
【用途】
個人での案件情報管理・閲覧、連絡用に。
セルごとに出力しているので単件帳票にモディファイ可能。
【導入方法】
1.下のGoogleスプレッドシートの表をご自分のスプレッドシートに、Apps scriptをスプレッドシートの拡張機能の「コード」にコピーしてください。既に入れてる方は丸丸入れ替えてください。
2.Gooleスプレッドシートの拡張機能の歯車のマークのスクリプトプロパティにAPIKEYという値を作ってChatGPTのお使いのキーを設定してください。(クレームAI機能要らない場合は省略可)
※最初の実行時にはセキュリティエラーが出ると思います、よしなに。
2023/12
・入力値にスペースや改行が紛れ込んでも動くようにしました
・クレームのAI出力を筆頭だけではなく全クレームから先頭2000文字持ってくるようにしました。(GPT-4仕様です。遠からず文字数を気にしなくてよくなるでしょう。)
2023/5
・和訳出力(廃止)
・筆頭クレームAI出力。(廃止)
2023/3
・リリース
【項目一覧】
【コピー元スプレッドシート、コード】
スプレッドシート(これをコピる)
コード(これをコピる)
function Espace(Number) {
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://worldwide.espacenet.com/patent/search?q=pn%3D";
var url2 = cleanedNumber;
var linkText = url2;
var link = url1 +url2 ;
var result = link ;
return result;
}
function GooglePatent(Number) {
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
var result = link ;
return result;
}
function Naiyo(Number) {
// 特許のURL
//Number = 'JP2005129498A';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して願番を抽出
var match = /<section itemprop="application" itemscope>[\s\S]*?<span itemprop="applicationNumber">([\s\S]*?)<\/span>/i.exec(html);
var wganban = match[1].trim();
// // 正規表現を使用して発明の名称を抽出
// if(Number.substring(0,2) =='JP'){
var wtitle = html.match(/<title>(.*?)*/)[0].replace(/<title>/g, '');
// }else{
// var wtitle = LanguageApp.translate(html.match(/<title>(.*?)*/)[0].replace(/<title>/g, ''),'','ja');
// }
// 正規表現を使用して出願人を抽出
var contributorsRegex = /<meta name="DC.contributor" content="(.*?)" scheme="assignee">/gi;
var match;
var contributors = [];
// 抽出されたタグからcontent属性の値を取得
while ((match = contributorsRegex.exec(html)) !== null) {
contributors.push(match[1]);
}
var wassignee = contributors.join(', ')? contributors.join(', '):"";
// 正規表現を使用して出願日を抽出
var match = html.match(/<meta name="DC\.date" content="(.*?)" scheme="dateSubmitted">/);
var wappdate = match ? match[1] : "-";
// 正規表現を使用して公開日を抽出
var match = html.match(/<meta name="DC\.date" content="([\d-]+)">/i);
var wpublishdate = match ? match[1] : "";
// 正規表現を使用して発行日を抽出
var match = html.match(/<meta name="DC\.date" content="(.*?)" scheme="issue">/);
var wissuedate = match ? match[1] : "";
// 正規表現を使用して審査・権利状況を抽出
var match = html.match(/<span itemprop="status">(.*?)<\/span>/);
var wstatus = match ? match[1] : "";
// <h2>タグの中から被引用数を見つける
var h2_matches = html.match(/<h2>(.*?)<\/h2>/g);
var wCited = 0
if (h2_matches) {
for (var i = 0; i < h2_matches.length; i++) {
if (h2_matches[i].indexOf("Families Citing this family") != -1) {
// <h2>タグの中から括弧内の数字を抽出
var number_matches = h2_matches[i].match(/\((\d+)\)/);
var wCited = number_matches ? number_matches[1]: "";
}
}
}
// 正規表現を使用して請求項を抽出
match = /<section itemprop="claims" itemscope>[\s\S]*?<\/section>/gi.exec(html);
// if(Number.substring(0,2) =='JP'){
// var wclaims = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
var wclaims = match? match[0].replace(/<[^>]+>/g, ''):"";
// }else{
// var wclaims = match? LanguageApp.translate(match[0].replace(/<[^>]+>|(\s{2})/g, ''),'','ja'):"";
// }
return wtitle + '\n' + '出願人/権利者:' + wassignee + '\n' + '出願番号:' + wganban + '\n' + '出願日:' + wappdate + '\n' + '公開日:' + wpublishdate + '\n' + '登録発行日:' + wissuedate +'\n' +'審査権利状況:' + wstatus + '\n' + '被引用数:' + wCited + '\n\n' + wclaims;
}
function Assignee(Number) {
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var linkText = url2;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して出願人を抽出
var contributorsRegex = /<meta name="DC.contributor" content="(.*?)" scheme="assignee">/gi;
var match;
var contributors = [];
// 抽出されたタグからcontent属性の値を取得
while ((match = contributorsRegex.exec(html)) !== null) {
contributors.push(match[1]);
}
var wassignee = contributors.join(', ')? contributors.join(', '):"";
return wassignee
}
function ganban(Number) {
//Number = 'WO2019021696';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /<section itemprop="application" itemscope>[\s\S]*?<span itemprop="applicationNumber">([\s\S]*?)<\/span>/i.exec(html);
var wganban = match? match[1].trim(): "";
return wganban;
}
function Shutsuganbi(Number) {
// 特許のURL
//Number = 'JP2005129498A';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して出願日セクションを抽出
var match = html.match(/<meta name="DC\.date" content="(.*?)" scheme="dateSubmitted">/);
var wappdate = match ? match[1] : "-";
return wappdate
}
function Meisho(Number) {
// 特許のURL
//Number = 'JP2005129498A';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<title>セクションを抽出
// if(Number.substring(0,2) =='JP'){
wtitle = html.match(/<title>(.*?)*/)[0].replace(/<title>/g, '');
// }else{
// var wtitle = LanguageApp.translate(html.match(/<title>(.*?)*/)[0].replace(/<title>/g, ''),'','ja');
// }
return wtitle ;
}
function Koukaibi(Number) {
// 特許のURL
//Number = 'US20200282387';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して公開日セクションを抽出
var match = html.match(/<meta name="DC\.date" content="([\d-]+)">/i);
var wpublishdate = match ? match[1] : "";
return wpublishdate;
}
function Hakkoubi(Number) {
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して発行日を抽出
var match = html.match(/<meta name="DC\.date" content="(.*?)" scheme="issue">/);
var wissuedate = match ? match[1] : "";
return wissuedate;
}
function Hiinyosuu(Number) {
// 特許のURL
//Number = 'JP2005129498A';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// <h2>タグの中から被引用数を見つける
var h2_matches = html.match(/<h2>(.*?)<\/h2>/g);
var wCited = 0
if (h2_matches) {
for (var i = 0; i < h2_matches.length; i++) {
if (h2_matches[i].indexOf("Families Citing this family") != -1) {
// <h2>タグの中から括弧内の数字を抽出
var number_matches = h2_matches[i].match(/\((\d+)\)/);
var wCited = number_matches ? number_matches[1]: "";
}
}
}
return wCited;
}
function Jyokyo(Number) {
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して審査・権利状況を抽出
var match = html.match(/<span itemprop="status">(.*?)<\/span>/);
var wstatus = match ? match[1] : "";
return wstatus
}
function ruiji1(Number) {
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[0]? pubNumbers[0]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji2(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[1]? pubNumbers[1]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji3(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[2]? pubNumbers[2]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji4(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[3]? pubNumbers[3]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji5(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[4]? pubNumbers[4]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji6(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[5]? pubNumbers[5]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji7(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[6]? pubNumbers[6]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji8(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[7]? pubNumbers[7]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji9(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[8]? pubNumbers[8]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji10(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[9]? pubNumbers[9]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji10(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[9]? pubNumbers[9]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji11(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[10]? pubNumbers[10]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji12(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[11]? pubNumbers[11]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji13(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[12]? pubNumbers[12]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji14(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[13]? pubNumbers[13]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji15(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[14]? pubNumbers[14]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji16(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[15]? pubNumbers[15]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji17(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[16]? pubNumbers[16]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji18(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[17]? pubNumbers[17]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji19(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[18]? pubNumbers[18]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji20(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[19]? pubNumbers[19]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji21(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[20]? pubNumbers[20]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji22(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[21]? pubNumbers[21]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji23(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[22]? pubNumbers[22]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji24(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[23]? pubNumbers[23]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function ruiji25(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[24]? pubNumbers[24]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function kadai(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /【*課題】[\s\S]*?【/gi.exec(html);
var wkadai = match? match[0].replace(/【*課題】|<[^>]+>|【/g, ''): "";
if (wkadai != ''){
}else{
var match = /<tech-problem>[\s\S]*?<\/tech-problem>/gi.exec(html);
var wkadai = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''): "";
}
return wkadai;
}
function riyoubunya(Number) {
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /【*分野】[\s\S]*?【/gi.exec(html);
var wriyoubunya = match? match[0].replace(/分野】|<[^>]+>|【/g, ''): "";
if (wriyoubunya != ''){
}else{
var match = /<technical-field>[\s\S]*?<\/technical-field>/gi.exec(html);
var wriyoubunya = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
}
//if (wriyoubunya != ''){
// if(Number.substring(0,2) =='JP'){
// }else{
// wriyoubunya = LanguageApp.translate(wriyoubunya,'','ja');
// }
// }
return wriyoubunya;
}
function kouka(Number) {
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /【*効果】[\s\S]*?【/gi.exec(html);
var wkouka = match? match[0].replace(/【*効果】|【|<[^>]+>/g, ''): "";
if (wkouka != ''){
}else{
var match = /<advantageous-effects>[\s\S]*?<\/advantageous-effects>/gi.exec(html);
var wkouka = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
}
return wkouka;
}
function keitai(Number) {
//Number = 'JP4150058B2';
// 特許のURL
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /<best-mode>[\s\S]*?<\/best-mode>/gi.exec(html);
var wkeitai = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
//if (wkeitai != ''){
// if(Number.substring(0,2) =='JP'){
// }else{
// wkeitai = LanguageApp.translate(wkeitai,'','ja');
// }
// }
return keitai;
}
function jisshirei(Number) {
// Number="JP2004279750"
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<advantageous-effects>セクションを抽出
var match = /【*実施例*】[\s\S]*?【/gi.exec(html);
var wjisshirei = match? match[0].replace(/【*実施例*】|【|<[^>]+>/g, ''): "";
if (wjisshirei != ''){
}else{
var match = /【*実施*形態*】[\s\S]*?【/gi.exec(html);
var wjisshirei = match? match[0].replace(/【*実施*形態*】|【|<[^>]+>/g, ''): "";
}
if (wjisshirei != ''){
}else{
var match = /【*実施*様態*】[\s\S]*?【/gi.exec(html);
var wjisshirei = match? match[0].replace(/【*実施*様態*】|【|<[^>]+>/g, ''): "";
}
if (wjisshirei != ''){
}else{
var match = /【*利用可能性*】[\s\S]*?【/gi.exec(html);
var wjisshirei = match? match[0].replace(/【*利用可能性*】|【|<[^>]+>/g, ''): "";
}
if (wjisshirei != ''){
}else{
var match = /.*実施例.*\n?/gi.exec(html);
var wjisshirei = match? match[0].replace(/<[^>]+>/g, ''): "";
}
if (wjisshirei != ''){
}else{
var match = /<best-mode>[\s\S]*?<\/best-mode>/gi.exec(html);
var wjisshirei = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
}
//if (wjisshirei != ''){
// if(Number.substring(0,2) =='JP'){
// }else{
// wjisshirei = LanguageApp.translate(wjsshirei,'','ja');
// }
// }
return wjisshirei;
}
function Seikyu(Number) {
//Number = 'JP2005129498A';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<Section itemprop="claims" itemscope>セクションを抽出
match = /<section itemprop="claims" itemscope>[\s\S]*?<\/section>/gi.exec(html);
// var wclaims = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
var wclaims = match? match[0].replace(/<[^>]+>/g, ''):"";
return wclaims;
}
//--------------------------
function Seikyu_AI(Number) {
// Number = 'WO2019021696';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<Section itemprop="claims" itemscope>セクションを抽出
match = /<section itemprop="claims" itemscope>[\s\S]*?<\/section>/gi.exec(html);
// var wclaims = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
var claimText = match? match[0].replace(/<[^>]+>/g, ''):"";
var claimText2k =claimText.slice(0,2000);
//APIキーを読み込む
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty('APIKEY');
const MAX_TOKENS = 2500;
const TEMPERATURE = 0.9;
//ChatGPTのAPIのエンドポイントを設定する
const url = "https://api.openai.com/v1/chat/completions";
const messages = [
{'role': 'user','content': '以下の文章は特許の請求項です。'},
{'role': 'user','content': "「" + claimText2k + "」" },
{'role': 'user','content': ':この内容を中学生にも分かるように100文字以内の日本語で文末は名詞で要約してください。'}
];
//OpenAIのAPIリクエストに必要なヘッダー情報を設定する
const headers = {
'Authorization':'Bearer '+ SECRET_KEY,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
const options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'gpt-4',
'max_tokens' : 2000,
'temperature' : 1,
'messages': messages})
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()) ;
return res.choices[0].message.content;
//return wclaims;
}
//--------------------------
function Seikyu_AI_KW(Number) {
//Number = 'US1445845';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して<Section itemprop="claims" itemscope>セクションを抽出
match = /<section itemprop="claims" itemscope>[\s\S]*?<\/section>/gi.exec(html);
// var wclaims = match? match[0].replace(/<[^>]+>|(\s{2})/g, ''):"";
var claimText = match? match[0].replace(/<[^>]+>/g, ''):"";
var claimText2k =claimText.slice(0,2000);
//APIキーを読み込む
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty('APIKEY');
const MAX_TOKENS = 2500;
const TEMPERATURE = 0.9;
//ChatGPTのAPIのエンドポイントを設定する
const url = "https://api.openai.com/v1/chat/completions";
const messages = [
{'role': 'user','content': '以下の文章は特許の請求項です。'},
{'role': 'user','content': "「" + claimText2k + "」" },
{'role': 'user','content': ':この内容中の特徴的なキーワードを日本語の箇条書きで列挙してください。'}
];
//OpenAIのAPIリクエストに必要なヘッダー情報を設定する
const headers = {
'Authorization':'Bearer '+ SECRET_KEY,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
const options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'gpt-4',
'max_tokens' : 2000,
'temperature' : 1,
'messages': messages})
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()) ;
return res.choices[0].message.content;
//return wclaims;
}
function HittoSeikyu(Number) {
//Number = 'EP1712530B1'
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 + url2 ;
var html = UrlFetchApp.fetch(link).getContentText();
//claimsを取得
var match = /<section itemprop="claims" itemscope>([\s\S]*?)<\/section>/i.exec(html);
var claimsText = match ? match[1] : "";
//最初のclaimを取得(EP)
match = /<li class="claim">([\s\S]*?)(?=<li class="claim-dependent">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
if(claimText1 == ""){
//最初のclaimを取得(US)
match = /<div class="claim">([\s\S]*?)(?=<div class="claim">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 ==''){
match = /<div class="claim-text">([\s\S]*?)<\/div>/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
return claimText1;
}
function HittoSeikyu_JP(Number) {
//Number = 'EP1712530B1'
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 + url2 ;
var html = UrlFetchApp.fetch(link).getContentText();
//claimsを取得
var match = /<section itemprop="claims" itemscope>([\s\S]*?)<\/section>/i.exec(html);
var claimsText = match ? match[1] : "";
//最初のclaimを取得(独立と従属と書いてるケース)
match = /<li class="claim">([\s\S]*?)(?=<li class="claim-dependent">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
if(claimText1 == ""){
//最初のclaimを取得
match = /<div class="claim">([\s\S]*?)(?=<div class="claim">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 ==''){
match = /<div class="claim-text">([\s\S]*?)<\/div>/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 !== '' && Number.substring(0,2) !== 'JP') {
claimText1 = LanguageApp.translate(claimText1, '', 'ja');
}
return claimText1;
}
function HittoSeikyu_AI(Number) {
//Number = 'EP1712530B1'
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 + url2 ;
var html = UrlFetchApp.fetch(link).getContentText();
//claimsを取得
var match = /<section itemprop="claims" itemscope>([\s\S]*?)<\/section>/i.exec(html);
var claimsText = match ? match[1] : "";
//最初のclaimを取得(独立と従属と書いてるケース)
match = /<li class="claim">([\s\S]*?)(?=<li class="claim-dependent">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
if(claimText1 == ""){
//最初のclaimを取得
match = /<div class="claim">([\s\S]*?)(?=<div class="claim">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 ==''){
match = /<div class="claim-text">([\s\S]*?)<\/div>/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 !== '' && Number.substring(0,2) !== 'JP') {
claimText1 = LanguageApp.translate(claimText1, '', 'ja');
}
// return claimText1;
//APIキーを読み込む
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty('APIKEY');
//ChatGPTのAPIのエンドポイントを設定する
const url = "https://api.openai.com/v1/chat/completions";
const messages = [
{'role': 'user','content': '以下の文章は特許の筆頭請求項です。'},
{'role': 'user','content': claimText1 + ':以上の内容を中学生にも分かるように50文字以内の日本語で文末は名詞で要約してください。'}
];
//OpenAIのAPIリクエストに必要なヘッダー情報を設定する
const headers = {
'Authorization':'Bearer '+ SECRET_KEY,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
const options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'gpt-4',
'max_tokens' : 1024,
'temperature' : 1,
'messages': messages})
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()) ;
return res.choices[0].message.content;
}
function HittoSeikyu_AI_KW(Number) {
//Number = 'EP1712530B1'
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 + url2 ;
var html = UrlFetchApp.fetch(link).getContentText();
//claimsを取得
var match = /<section itemprop="claims" itemscope>([\s\S]*?)<\/section>/i.exec(html);
var claimsText = match ? match[1] : "";
//最初のclaimを取得(独立と従属と書いてるケース)
match = /<li class="claim">([\s\S]*?)(?=<li class="claim-dependent">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
if(claimText1 == ""){
//最初のclaimを取得
match = /<div class="claim">([\s\S]*?)(?=<div class="claim">)/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 ==''){
match = /<div class="claim-text">([\s\S]*?)<\/div>/i.exec(claimsText);
var claimText1 = match ? match[1].replace(/<[^>]+>|(\n+)/g,'') : "";
}
if (claimText1 !== '' && Number.substring(0,2) !== 'JP') {
claimText1 = LanguageApp.translate(claimText1, '', 'ja');
}
// return claimText1;
//APIキーを読み込む
const SECRET_KEY = PropertiesService.getScriptProperties().getProperty('APIKEY');
//ChatGPTのAPIのエンドポイントを設定する
const url = "https://api.openai.com/v1/chat/completions";
const messages = [
{'role': 'user','content': '以下の文章は特許の筆頭請求項です。'},
{'role': 'user','content': claimText1 + ':以上の内容から特徴的なキーワードを箇条書きで列挙してください。'}
];
//OpenAIのAPIリクエストに必要なヘッダー情報を設定する
const headers = {
'Authorization':'Bearer '+ SECRET_KEY,
'Content-type': 'application/json',
'X-Slack-No-Retry': 1
};
//OpenAIのAPIリクエストに必要なヘッダー情報を設定
const options = {
'muteHttpExceptions' : true,
'headers': headers,
'method': 'POST',
'payload': JSON.stringify({
'model': 'gpt-4',
'max_tokens' : 1024,
'temperature' : 1,
'messages': messages})
};
const res = JSON.parse(UrlFetchApp.fetch(url, options).getContentText()) ;
return res.choices[0].message.content;
}
function Chukan(Number) {
// 特許のURL
//Number = 'JP4867478';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用してSimilardocsを抽出
var similarDocs = html.match(/<section>\s*<h2>Similar Documents<\/h2>([\s\S]*?)<\/section>/)[1];
var pubNumbers = similarDocs.match(/<span itemprop="publicationNumber">(.*?)<\/span>/g);
var wsimilarNumber = pubNumbers[5]? pubNumbers[5]:'';
if (wsimilarNumber !== ''){
var similarNumber = wsimilarNumber.replace(/<[^>]+>/g, "") ;
var wNaiyo = Naiyo(similarNumber);
}
return wNaiyo
}
function Chukan(Number) {
// 特許のURL
//Number = 'JP2023074987';
var cleanedNumber = Number.replace(/\s+/g, '');
// 特許のURL
var url1 = "https://patents.google.com/patent/";
var url2 = cleanedNumber;
var link = url1 +url2 ;
// UrlFetchAppを使用して特許ページのHTMLを取得
var html = UrlFetchApp.fetch(link).getContentText();
// 正規表現を使用して、<dd itemprop="events" ...>...</dd> の部分をすべて抽出する
const ddRegex = /<dd itemprop="events"[\s\S]*?<\/dd>/gi;
const ddMatches = html.match(ddRegex);
// 各 <dd> 要素から、<time> 要素と <span itemprop="title"> 要素の内容を抽出する
const datesAndTitles = ddMatches.map(ddMatch => {
const timeRegex = /<time itemprop="date" datetime="([\d-]+)">([\s\S]*?)<\/time>/i;
const timeMatch = ddMatch.match(timeRegex);
const date = timeMatch ? timeMatch[1] : '';
const dateString = date ? new Date(date).toLocaleDateString() : '';
const titleRegex = /<span itemprop="title">([\s\S]*?)<\/span>/i;
const titleMatch = ddMatch.match(titleRegex);
const title = titleMatch ? titleMatch[1] : '';
return `${dateString} ${title}`;
});
// 日付とタイトルを改行区切りで連結した文字列を返す
return datesAndTitles.join('\n');
}
以上
この記事が気に入ったらサポートをしてみませんか?