モーリーのメモ

アプリ開発等(プログラミング、CG作成)、興味を持ったことを実践してまとめるブログです。

モーリーのメモ

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

 Google スプレッドシートで宛名印刷を作ります。
 
 記事にあるApps Scriptのコードをコピペして実行すると、宛名印刷関連のメニューがスプレッドシートに追加されます。
 
 追加されたメニューにより、住所録シートのデータから、

    f:id:mmorley:20161103120155p:plain
 宛名印刷のデータを作成します。
    f:id:mmorley:20161103170735p:plain:w350
 
 なお実際に使うまでには、はがきに対する印刷位置の調整する必要があります。また、文字数の制限等の入力ルールがあります。
 そして、スプレッドシートの仕様でフォントが自由に選べないといった制約があります。
 
 ある程度、調整を楽しめる人向けの記事になります。

使用環境

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

Google スプレッドシートについて

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

新しいスプレッドシートを作成する

    ブラウザで作業

  1. Google スプレッドシートのサイトを開きます。
    docs.google.com
  2. ページ右下にある『+』をクリックします。
    f:id:mmorley:20211125103326p:plain
    『無題のスプレッドシート』が開きます。
     

    Google スプレッドシートで作業

  3. タイトルの『無題のスプレッドシート』をクリックして、”宛名印刷&住所録”に名前を変更します。
    f:id:mmorley:20211125104707p:plain

Apps Scriptにコードを貼り付ける

    スプレッドシートで作業

  1. 拡張機能』→『Apps Script』をクリックします。
    f:id:mmorley:20211125125937p:plain
    『無題のプロジェクト』が開きます。

    Apps Scriptで作業

  2. 下記のコードをすべてコピーして、『Apps Script』に貼り付けます。
    ※元からあるコードは削除します。
    ※コードの右下の『view raw』をクリックするとコードが別ウインドウで開くので全選択しやすいです。

  3. 『プロジェクト保存』ボタンをクリックします。
    f:id:mmorley:20211125130234p:plain

スクリプトを承認する

 スクリプトを最初に実行する時には『承認』が必要です。
 途中で『~(安全ではないページ)に移動』と表示されるので怖そうですが、Googleが関知してないスクリプトが動くページなのでよく確認してね!ということです。なので自分で作成したスクリプトでも承認が必要になります。

    Apps Scriptで作業

  1. 『setHagakiSheet(実行する関数を選択する)』をクリックして、『onOpen(一番下)』を選択します。
    f:id:mmorley:20211125112813p:plain
  2. 『実行』をクリックします。
    f:id:mmorley:20211125113225p:plain
  3. 『権限を確認』をクリックします。
    f:id:mmorley:20211125113413p:plain
  4. Google スプレッドシートを使用しているアカウントを選択します。
    f:id:mmorley:20210302110028p:plain
  5. 『詳細』をクリックします。
    f:id:mmorley:20210302132812p:plain
  6. 『無題のプロジェクト(安全ではないページ)に移動』をクリックします。
    f:id:mmorley:20210302133843p:plain
  7. 『許可』をクリックします。
    f:id:mmorley:20211125130404p:plain
『onOpen』関数が実行されて、スプレッドシートにメニューが追加されます。
今後『onOpen』は、スプレッドシートを開いたときに自動的に実行されます。

はがきと住所録のシートを作成する

  • 『はがき』シート
    セルの形状をはがきのレイアウトに合わせています。
    プリンタ等、使用する環境によってはセルのサイズを調整する必要があるかもしれません。
  • 『住所録』シート
    宛先等のデータを入力するシートです。

    スプレッドシートで作業

  1. 『宛名印刷』→『はがき・住所録シート作成』をクリックします。
    f:id:mmorley:20211125140236p:plain
    『はがき』と『住所録』のシートが作成されます。
    f:id:mmorley:20211125140500p:plain

住所録にデータを追加する

入力ルール

  • 郵便番号、住所、名前を全て全角文字で入力します。
  • 入力文字数
    • 宛先住所:16文字
    • 宛名:10文字
    • 差出人住所&名前:16文字
  • 郵便番号はハイフンを入れません。
  • 改行させたい部分に『,(半角ピリオド)』を入れます。
    f:id:mmorley:20211125144206p:plain

住所録にテスト用のデータを追加する

  1. 下表のデータをコピーします。
    1000001◯◯県◯◯市◯◯◯◯◯,1丁目2−3◯山 ◯太郎 様,◯子 様2000001◯◯県◯◯市◯◯ 1丁目2−3,◯◯アパート◯◯◯号室◯村 ◯郎
    1000002◯◯◯県◯◯◯市◯◯◯,2丁目3−4◯木 ◯男 様2000001◯◯県◯◯市◯◯ 1丁目2−3,◯◯アパート◯◯◯号室◯村 ◯郎
    1000003◯◯県◯◯◯郡◯◯◯◯,3丁目4−5◯村 ◯一  様,◯◯美 様2000001◯◯県◯◯市◯◯ 1丁目2−3,◯◯アパート◯◯◯号室◯村 ◯郎

    スプレッドシートで作業

  2. 『住所録』シートを開きます。
  3. 『A2』のセルを右クリック→『特殊貼り付け』→『値のみ貼り付け』をクリックします。
    f:id:mmorley:20211125142857p:plain

宛名印刷をプレビューする

    スプレッドシートで作業

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

宛名印刷を実行する

    スプレッドシートで作業

  1. 『宛名印刷』→『宛名印刷ファイルに出力』をクリックします。
    f:id:mmorley:20211125150530p:plain

    Google ドライブで作業

  2. 『マイドライブ』に『宛名印刷_出力』という名前のスプレッドシートが出来ているので開きます。
    f:id:mmorley:20161104181017p:plain

    スプレッドシートで作業

  3. 『ファイル』→『印刷』をクリックします。
    f:id:mmorley:20211125151002p:plain
  4. 下記のように設定してします。
    • 印刷:ワークブック
    • ページの向き:縦向き
    • 印刷方式:すべてチェックを外す
    f:id:mmorley:20211125153953p:plain
  5. 画面右上の『次へ』をクリックします。
    f:id:mmorley:20211125154338p:plain
  6. 『保存』をクリックします。
    f:id:mmorley:20211125154626p:plain
  7. 保存ダイアログで、『宛名印刷_出力.pdf』を保存します。

宛名印刷_出力.pdfをテスト印刷する

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

余白のサイズの変更

 必要に応じて、印刷の位置をスクリプトで調整します。
 Apps Scriptを開いて、スクリプトの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化)で、余白の設定ができない。
    ウェブサービスからプリンタ等のデバイスへのアクセスが制限されるのは、仕方ないかなと思います。
    それ以外は、改善されるといいなと思います。