読者です 読者をやめる 読者になる 読者になる

モーリーのメモ

プログラミングやCG作成等、アプリ開発を中心に情報を収集中!

年賀はがきの宛名印刷を作る!:Googleスプレッドシート

 この記事は、スプレッドシートで宛名印刷を作ること自体が目的です。
 実際に使うには、印刷の位置とサイズの調整(プログラムやプリンタの設定で調整)が必要だったり、文字の入力にルールがあったりと、ちょっと手間です。
 フォントも自由に選べません。
 
 ちなみに、宛名印刷が目的の場合は、下記のサービスが良さそうでした。
 yubin-nenga.jp
 ↑これが無料で使えるんですね。ちょっとびっくり。
 
 この記事の主旨に戻ると、Googleスプレッドシートを使って、
 住所録データから、
f:id:mmorley:20161103120155p:plain
 年賀状の宛名面を作成します。
f:id:mmorley:20161103170735p:plain:w350
 Google Apps Script(略称GAS、エクセルのマクロ的なもの)から、スプレッドシートを色々操作してみました。

使用環境

 私が使用している環境です。

設定方法

 Googleスプレッドシートは、無料で使えるオンラインの表計算Excelみたいな)アプリです。
 利用するにはGoogleアカウントが必要です。

2.新しいスプレッドシートを作成

  1. 画面右下の赤い『+』をクリック
    f:id:mmorley:20160511135546p:plain
    『無題のスプレッドシート』が開きます。
  2. 名前を変更
    名前は何でも構いません。(『宛名印刷&住所録』など)
    f:id:mmorley:20160511140418p:plain:w500

3.スクリプトエディタを開く

  1. 『ツール』-『スクリプトエディタ』をクリック
    f:id:mmorley:20161018224209p:plain:w500
    スクリプトエディタで『無題のプロジェクト』が開きます。

4.コードをコピペする

  1. スクリプトエディタの『コード.gs』にあるコードを全て削除
  2. 下記のコードをコピーして、『コード.gs』に貼り付ける
    (右下の『view raw』を別窓で開くと、全選択しやすいかも。)

5.コードを保存

  1. 『保存』ボタンをクリック
    f:id:mmorley:20160511155732p:plain
  2. プロジェクト名を入力して『OK』をクリック
    名前は何でも構いません。(『宛名印刷&住所録』など)
    f:id:mmorley:20161104094625p:plain

6.スプレッドシートにメニューを追加

 『辞書』メニューを追加します。

  1. 『実行』-『onOpen』をクリック
    f:id:mmorley:20161104101658p:plain
  2. 『許可を確認』をクリック
    f:id:mmorley:20161104110609p:plain:w400
  3. 『許可』をクリック
    f:id:mmorley:20161104105910p:plain:w400

 スプレッドシートに戻ると、メニューに『宛名印刷』が追加されています。
f:id:mmorley:20161104110947p:plain:w500
 設定は以上です。

使い方

 注意!:テスト印刷をして、印刷の位置とサイズを調整する必要があります。いきなりハガキに印刷しないでね。

『はがき』シート、『住所録』シートを作成

『はがき』シートは、宛名書きのベースとなるシートです。
『住所録』シートは、宛先等のデータを入力するシートです。

  1. スプレッドシートを開き、メニューの『宛名印刷』-『はがき・住所録シートを作成』をクリック
    f:id:mmorley:20161104115026p:plain:w500
    シートが追加されます。
    f:id:mmorley:20161104115313p:plain

住所録を追加

 とりあえず試す場合は、スクリプトエディタに貼り付けたコードにあるテストデータをコピペして下さい。

  1. 『住所録』シートを開き、宛名データを入力
    • 郵便番号、住所、名前を全て全角文字で入力します。
    • 1行当たりの入力文字数は、下記の通りです。
      • 宛先住所:16文字
      • 宛名:10文字
      • 差出人住所&名前:16文字
    • 郵便番号はハイフンを入れません。
    • 改行させたい部分に『,』(半角ピリオド)を入れます。

f:id:mmorley:20161104121638p:plain

宛名印刷をプレビュー

  1. 『住所録』シートでプレビューしたい行を選択
  2. メニューの『宛名印刷』-『現在の行の宛名書きを表示』をクリック
    f:id:mmorley:20161104135441p:plain
    『はがき』シートで、宛名書きが確認できます。
    なお、文字の縦方向の配置は下記のようになっています。
    f:id:mmorley:20161104171834p:plain:w300

宛名印刷を実行

  1. メニューの『宛名印刷』-『宛名印刷ファイルに出力』をクリック
    f:id:mmorley:20161104175842p:plain:w500
  2. Googleドライブ』の『マイドライブ』に『宛名印刷_出力』というスプレッドシートが出来ているので開く
    f:id:mmorley:20161104181017p:plain:w300
  3. メニューの『ファイル』-『印刷』をクリック
    f:id:mmorley:20161105004319p:plain:w350
  4. 印刷設定を下記のように設定し、『印刷』をクリック
    • オプション
      • 『すべてのシート』を選択
      • 『グリッド線なし』にチェックし、他のチェックを外す
    • 用紙サイズ:『A4 (210mm x 297mm)』を選択
      (*適切なサイズがないため、プリンタでサイズ変更します。)
    • レイアウト:『幅に合わせる』と『横』を選択
      f:id:mmorley:20161105092539p:plain:w400
  5. 印刷で『印刷』ボタンをクリック
    f:id:mmorley:20161105103807p:plain:w400
  6. 保存ダイアログで、『export.pdf』を保存

『export.pdf』をテスト印刷

 保存した『export.pdf』を印刷します。
 がしかし!まずは、印刷の位置とサイズを調整する必要があります。
 プリンタの設定は、使用している機種によって変わります。
 ちなみに私の場合は、プリンタのオプションで、用紙に『ハガキサイズ』を選択し、縮尺は『手動(カスタム)で48%』にするといい感じで出力されました。

余白のサイズの変更

 印刷の位置は、プログラム内で変更します。
 スクリプトエディタを開いて、10〜11行目の『margin_left』と『margin_top』で余白のサイズを変更します。
『margin_left』は『はがき』シートの『A列』の幅のサイズです。
『margin_top』は『はがき』シートの1行目の高さのサイズです。

// はがきのシートの設定
function setHagakiSheet(){
  var margin_left = 1; // 左側の余白
  var margin_top = 47; // 上側の余白 

印刷

 テスト印刷で満足する結果が得られてから実行して下さい。自己責任でお願いします。

捕捉

等幅フォントしか使用できません。

 1文字ごとの幅が同じフォント(MSゴシック等)しか使えません。
 スプレッドシートには縦書きがありません。改行で縦書きにしているのでずれてしまいます。
 f:id:mmorley:20161105113551p:plain:w300

全角半角はチェックしていません。

 住所録データは全角文字で入力する必要がありますが、チェックはしていません。

文字数はチェックしています。

あとがき

 時期的な思い付きで作ってみました。
 なお、今回Googleスプレッドシートで出来なかったことは下記のとおり。

  • GASから直接印刷はできない。
  • GASからPDFする方法は2つあるが、下記の点で今回採用せず。
    • 『getAs()』と『createFile()』を使う方法:印刷設定(グリッド線を消す、レイアウトの変更等)が出来ない。
    • 『URLFetchApp.fetch()』を使う方法は:印刷設定は出来るが、認証が必要。
  • 使える日本語フォントが少ない。自由に追加できない。
  • セルに縦書きがない。
  • 非表示中のシートの選択行を取得できない。
  • 印刷(PDF化)で、サイズの選択肢にハガキサイズがない。
  • 印刷(PDF化)で、余白の設定ができない。

 ウェブサービスからプリンタ等のデバイスへのアクセスが制限されるのは、仕方ないかなと思います。
 それ以外は、改善されるといいなと思います。