ねねのお仕事忘備録

めんどくさがり屋の私のお仕事お仕事忘備録です!実際使て便利だったマクロ・スプリクトを中心に記事を更新していきます!

会社名いちいち調べるのめんどくさい…

前、猫上司に教えてもらってPDFの中身セルに書き出す方法教えてもらったけど、結局中身確認して会社名とかコピーして隣のセルにはりつけてるんだよね…めんどくさい

せっかく教えてやったのに、何文句いってるんだ?

だって、PDF開いて確認するのか、セルの中見て確認するのかだけの違いなんですもん

こないだ祝日をExcelAPIつかってやっただろ?あれ、T番号でも使えるんだぞ

え!そんな方法があるんですか!!

 

今回使うもの

スプレットシート

 

準備1

以前、紹介したPDFの中身を書き出す方法を使用し、B列にPDFの中身を転記させます。

ちなみに今回使用するPDFはこちらになります。

以前のGASを使い、B列に中身を転記させます。

B列に書き出したテキスト情報を少しきれいにするために、行内改行、空白を以下のガスで消します。

 

function deleteBlankCellsAndConvertToHalfWidth() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const lastRow = sheet.getLastRow();

  const values = sheet.getRange("B2:B" + lastRow).getValues();
  let newValues = [];

  for (let i = 0; i < values.length; i++) {
    let cellValue = values[i][0].toString();

    // 空白文字、スペース、改行を削除
    cellValue = cellValue.replace(/\u00A0/g, '').replace(/ /g, '').replace(/ /g, '').replace(/\r?\n/g, '').trim();

    // 全角英数字を半角に変換
    cellValue = cellValue.replace(/[A-Za-z0-9]/g, function(s) {
      return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
    });

    // 全角記号を半角に変換 (一部)
    const fullwidthSymbols = "!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~";
    const halfwidthSymbols = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
    for (let j = 0; j < fullwidthSymbols.length; j++) {
      cellValue = cellValue.replace(new RegExp(fullwidthSymbols[j], 'g'), halfwidthSymbols[j]);
    }

    if (cellValue !== "") {
      newValues.push([cellValue]);
    }
  }

  // B列に新しい値を書き込む
  sheet.getRange("B2:B" + (newValues.length + 1)).setValues(newValues);

  }


GASを実行したものが、下記の画像です。

D2列に(どこでも大丈夫ですが、今回はDを使います!)

=IFERROR(MID(B2,FIND("登録番号T",B2),18),"番号が見つかりません")

B2に入っている「登録番号T0000000000000」計18文字を抜き出す関数です。

これでT番号を抜き出すことができます!

※=IFERROR(MID(B2,FIND("登録番号T",B2),18)

この青文字を消して

=IFERROR(MID(B2,FIND("T",B2),14)

としてもいいのですが、電話番号TEL を引っ張て来てしまう可能性があるので登録番号Tにしています。

 

このD列をさらに加工するために

C列に

=IFERROR(MID(D2,FIND("T",D2),14),"番号が見つかりません")

を入れます。

するとT0000000000000 をぬけだせました!

これをExcelAIPをつかって登録されている会社名を導きます!

=IMPORTXML("https://api.excelapi.org/company/invoice_name?id="&C2,".")

 

※T0000000000000 は存在しないため、下の行にいつも使用させていただいてるイオン銀行さんのT番号をいれました!するとE列に会社名が抜き出されます!

 

少し最初はめんどくさいかもしれませんが、一度作ってしまえば次回以降から簡単に会社名を抜け出せます!

Excelの場合 IMPORTXML関数ではなくWEBSERVICE関数を使います

例)=WEBSERVICE("http://api.excelapi.org/company/invoice_name?id="&$C2)

 

今回は関数を使ってT番号を抽出しましたが、書式によってうまく抜き出せない可能性があります。

そこで次回、GASを使ってT番号を抜けだせるかやってみたいと思います!