見出し画像

【最新版】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');
}








以上


この記事が気に入ったらサポートをしてみませんか?