パソコン用ヘッダー画像
Googleサービス PR

【保存版】スプレッドシートを活用した住所録の入力自動化

記事内に商品プロモーションを含む場合があります

年賀状やDM発送、顧客管理…住所録の管理って面倒ですよね?データの更新漏れや入力ミスも心配。

そんな悩みを解決するのが、Google Apps Script(GAS)とスプレッドシートの連携!この記事では、プログラミング初心者でもコピペで簡単に住所録を作成・管理できるスクリプトを解説します。

自動化で作業効率アップ間違いなし!顧客情報の一元管理でビジネスチャンスも広がるかも?

スプレッドシートで住所を自動反映

スプレッドシートで住所録をカンタン管理

年賀状のシーズンになると、少し手間に感じてしまうのが宛先の住所ですよね。年賀状は手書き派の方であればなおさらです。

今回はGoogleスプレッドシートという、Google版のエクセルみたいななものをつかった住所の自動反映方法について紹介します。

先に自動反映の手順をお伝えします。コードのコピーと貼り付け作業で完結しますのでご安心ください。

  1. 住所録(スプレッドシート)を用意
  2. 【Google Apps Script】を起動
  3. コードの貼り付け/スクリプト実行

手順① 住所録(スプレッドシート)を用意

スプレッドシートを準備

まずは、住所録用のスプレッドシートを用意します。Chromeトップページの右上アカウント画像の近くにある9個の点をタップすると、スプレッドシートが用意できます。

住所録をスプレッドシートで管理することで以下のことが効率化を図ることが可能。

手順② Google Apps Scriptを起動

あまり聞きなれない言葉かもしれません。私もまだ学び始めたばかりですので詳細については別の機会にご紹介させていただきます。

ものすごく便利な機能ですので
紹介する回数が増やします!

Google Apps Script」とは?

Googleが開発したプログラミング言語でグーグルのサービスを自動化するためにうまれたものです。GAS(ガス)と呼ばれます。

手順③ コードの貼り付け/スクリプト実行

  • STEP1
    【拡張機能】をタップ
    拡張機能からスクリプトの準備をする
    いくつかスクリプトをご紹介します
  • STEP2
    【Apps Script】をタップ
    GASは拡張機能のひとつ
    ここからコードを貼っていく

住所録自動作成のための3つのスクリプト

スプレッドシートとGASを連携することで、以下のような作業を自動化できます。プログラミング初心者でも比較的簡単に習得できるのが特徴です。

  • 住所データの自動入力・更新
  • 郵便番号からの住所自動取得
  • 住所データのクリーニング(不要なスペースや文字の削除)
  • 住所録の定期的なバックアップ
  • 宛名ラベルの作成

スクリプトを関数として実行

スクリプトは関数として扱うことも可能です。デフォルトで表示されている、「function myFunction() {}」と書かれている部分を削除してください。

そして、以下のコードを貼り付けてください。

function addAddress(zipcode) {
 //データの読み込み
  const url = `https://zipcloud.ibsnet.co.jp/api/search?zipcode=`+ zipcode ;
  const response =   UrlFetchApp.fetch(url).getContentText();
  const respData =  JSON.parse(response);

  //データ出力
  const result = respData.results[0];
  const pref = result.address1; //都道府県
  const city = result.address2; //市区町村
  const town = result.address3; //町域名

  return pref + city + town;
  }

日本郵便が公開している郵便番号データを検索するサービス【zipcloud】という株式会社アイビスが運営するサービスのAPIを利用して、住所のデータを取得します。

※データ利用する際、「zipcloudの利用規約」に同意する必要があります。

最後にコードの保存をお忘れなく!

スクリプトを実行

先ほどの関数名を普段関数を使用するように、セルに入力すると参照するセルの郵便番号をもとに住所が反映されます。

  1. 作成したaddAddress関数を入力
    =addAddress(郵便番号入力セル)
  2. 郵便番号の入力
郵便番号から住所自動入力するスクリプト

住所録としての情報を追加

あくまで、住所の自動入力をするスクリプト。住所の自動反映ができたら、あとは、宛先に必要なほかの情報をスプレッドシートにまとめます。

入力が完了したら、CSVデータでダウンロードして、使用している年賀状ソフトに紐づけさせれば作業完了です。

メニューからの実行

関数として利用するのも一見便利ですが、セルに入力が必要となります。別の方法として、オリジナルのメニューを作成して実行させることが可能です。

スクリプトは以下のとおり。

function getAddressFromPostalCode() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();

  for (let i = 3; i <= lastRow; i++) {
    const postalCode = sheet.getRange(i, 2).getValue(); // 郵便番号はB列
    const addressCell = sheet.getRange(i, 3); // 住所はC列

    if (postalCode && !addressCell.getValue()) {
      const response = UrlFetchApp.fetch(`https://zipcloud.ibsnet.co.jp/api/search?zipcode=${postalCode}`);
      const data = JSON.parse(response.getContentText());

      if (data.results && data.results.length > 0) {
        const address = data.results[0].address1 + data.results[0].address2 + data.results[0].address3;
        addressCell.setValue(address);
      } else {
        addressCell.setValue("住所が見つかりませんでした");
      }
    }
  }
}

最初の郵便番号はB3セルに入力を前提にしてます。

郵便番号から住所が自動入力できるように、GASを使えば、スプレッドシートのタブにオリジナルメニューを作成することが可能です。

\オリジナルメニュ―の作り方はこちらから/

【保存版】GASでスプレッドシートのメニューをカスタマイズ!!Google スプレッドシートのカスタムメニューを活用して、日々の作業効率をアップさせましょう!この記事では、カスタムメニューの作り方から便利な活用事例まで詳しく解説します。初心者でも簡単に作れるので、ぜひチャレンジしてみてください。...

その他便利なスクリプト

郵便番号から住所の自動入力ができるようになりました。おまけとして、2つスクリプト紹介します。

どちらも、管理するリストが多ければ多いほど助かるスクリプトになります。

  • 番地表記をまとめて統一スクリプト
  • ラベル印刷スクリプト

番地記載の統一スクリプト

○○番地だったり〇ー〇とハイフンを使用した表記が混在しているときがありますよね。この場合にすべてハイフンに変えるスクリプトをご紹介します。

function cleanAddressData() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();

  for (let i = 2; i <= lastRow; i++) {
    const addressCell = sheet.getRange(i, 3); // 住所はC列にあると仮定
    let address = addressCell.getValue();

    // 不要なスペースや文字を削除
    address = address.replace(/ /g, ' '); // 全角スペースを半角スペースに変換
    address = address.replace(/^\s+|\s+$/g, ''); // 前後のスペースを削除
    address = address.replace(/丁目|番地/g, '-');  // 丁目、番地をハイフンに変換
    address = address.replace(/号/, '');           // 号を削除

    addressCell.setValue(address);
  }
}

あわせて、スペースの半角、全角の統一も含まれてます。

ラベル印刷スクリプト

DM発送をおこないたい場合など、ラベル印刷したい時に使えるスクリプトです。

function createAndPrintAddressLabels() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();
  const doc = DocumentApp.create("宛名ラベル");
  const body = doc.getBody();

  // 宛名ラベルのスタイルを設定 (必要に応じて調整)
  body.setFontFamily('メイリオ');
  body.setFontSize(12);

  // テーブルの作成
  const table = body.appendTable();
  const tableAttributes = {};
  tableAttributes[DocumentApp.Attribute.BORDER_WIDTH] = 0; // テーブル全体の枠線を無しに設定
  table.setAttributes(tableAttributes);

  let currentRow = table.appendTableRow();

  for (let i = 3; i <= lastRow; i++) {
    const postalCode = sheet.getRange(i, 2).getValue();
    const name = sheet.getRange(i, 1).getValue() + " 様"; // 敬称「様」を追加
    const address = sheet.getRange(i, 3).getValue();

    // セルにラベルを追加
    let cell = currentRow.appendTableCell();
    cell.setVerticalAlignment(DocumentApp.VerticalAlignment.CENTER);
    cell.appendParagraph(`〒${postalCode}`);
    cell.appendParagraph(address);
    cell.appendParagraph(name);
    
    // セルのスタイルを設定 (余白を設定)
    const cellAttributes = {};
    cellAttributes[DocumentApp.Attribute.BORDER_WIDTH] = 0; // セルの枠線を無しに設定
    cellAttributes[DocumentApp.Attribute.PADDING_TOP] = 5;
    cellAttributes[DocumentApp.Attribute.PADDING_BOTTOM] = 5;
    cellAttributes[DocumentApp.Attribute.PADDING_LEFT] = 10; // 左右のパディングを大きく設定して間隔を作成
    cellAttributes[DocumentApp.Attribute.PADDING_RIGHT] = 10;
    cell.setAttributes(cellAttributes);

    // 3列ごとに改行
    if ((i - 3 + 1) % 3 === 0) { // 修正: 3行目から開始するので、カウントを調整
      currentRow = table.appendTableRow();
    }
  }

  // ドキュメントを保存
  doc.saveAndClose();

  // PDFとして取得
  const docFile = DriveApp.getFilesByName("宛名ラベル").next();
  const pdfBlob = docFile.getAs("application/pdf");
  DriveApp.createFile(pdfBlob);

  SpreadsheetApp.getUi().alert('宛名ラベルをGoogleドライブに保存しました。');
}

印刷が合わない場合、各自調整してください!

まとめ

郵便番号だけ入力すれば一番やっかいな住所入力の手間が省けることができました。番地や、建物名などその他入力情報は必要ですが、かなりの時短につなげることが可能です。

あとは、住所表記のクリーニング、ラベル印刷のスクリプトなどGoogle Apps Scriptを使いこなせば、さまざまな作業が効率よくなります。

みなさんも、分かりやすく年賀状の準備の際はぜひ、利用してみてください。

\初学者でも使いやすいプログラミング言語/

プログラミング初心者にとって学びやすいローコート開発ツール『Google Apps Script』
Google Apps Script~初心者のための完全ガイド~ローコード開発の手法とGASの具体的な利用方法について初心者向けにわかりやすく解説します。ローコード開発のメリットや実際のビジネス事例を紹介し、今後の展望も探ります。初心者向けに始め方と学習リソースも提供します。...

Fatal error: Uncaught JSMin_UnterminatedRegExpException: JSMin: Unterminated RegExp at byte 47225: /.source + in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php:264 Stack trace: #0 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(150): JSMin->action(1) #1 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(84): JSMin->min() #2 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeSpeedupper.php(38): JSMin::minify('/* PrismJS 1.29...') #3 /home/c1448553/public_html/one-walker.net/wp-includes/class-wp-hook.php(324): autoptimizeSpeedupper->js_snippetcacher('/* PrismJS 1.29...', '/home/c1448553/...') #4 /home/c1448553/public_html/one-walker.net/wp-includes/plugin.php(205): WP_Hook->apply_filters('/* PrismJS 1.29...', Array) #5 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeScripts.ph in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php on line 264