#120 Google アプリで差し込みを実現する(ドキュメント+スプレッドシート)
はじめに
Facebook でもつながっている方の ↓ のような投稿を見つけた。
わたし自身も、↓ の記事でGoogle が提供している Google スライドを用いた差し込みを行う GAS のプログラムを紹介していますが、Google ドキュメントについては扱っていませんでした。
ということで、Google ドキュメント+Google スプレッドシートによる差し込みを行ってみました。
上記の Facebook への投稿を行っていた本人からは、サンプルとなるデータと、現時点での GAS のプログラムを提供いただき、こうやってネタにして公開することを了解していただいています。😘
Google アプリでの操作なので印刷用途にはあまり向いてないこともあって、実際に印刷までは行っていません。そのため、「差し込み印刷」ではなく「差し込み」と表現しています。
作成したプログラム
作成したプログラムは、Google スプレッドシートに埋め込んであります。以下の URL にアクセスして、自身のGoogle ドライブにファイルをコピーしてください。
https://bit.ly/3XUVIOX
→ 利用件数を確認するために Bitly の短縮 URL で掲載しています。
なお、プログラムをはじめて実行する際には、アカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。
備えている機能
今回のプログラムの機能は以下の通りです。
それぞれのデータを、スプレッドシートに差し込んで Google ドキュメントに出力するが、すべてのデータを結合した内容もあわせて出力する。
日付などのデータは、スプレッドシートで表示されているままの状態で差し込まれます。
差し込み元のスプレッドシート、テンプレートとなるドキュメントのファイルを、スプレッドシート内で指定可能。
→スクリプトエディタは、基本的に操作しなくてもよい差し込みのためのキーワードの前後に付ける文字(「 や 」)もシート内で変更可能。
指定されたスプレッドシート内に複数のシートがあっても、差し込み対象となるシートを指定可能。
指定されたシート内でどの列が差し込みの対象となるかを指定可能。
差し込みキーワードはデータの見出し行を基本とするものの、別途指定可能。
PDF への書き出しに対応。
使い方
コピーされたシート「基本設定」に差し込みに必要なデータを設定していく形になっています。 7段階の手順が必要になりますが、それぞれ図解していきます。
以降は、このスプレッドシート+GAS で差し込みを行うための手順であって、実際には ⑹ で指定する差し込みキーワードを用いて、⑴ で指定するテンプレートとなる Google ドキュメントのファイルを用意しなければなりません。差し込みの操作は ⑴ → ⑺ の順に行いますが、そのための事前準備が必要なことはご理解ください。
⑴ テンプレートとなるドキュメントのファイル ID を指定
まずは、データを差し込む対象となる Google ドキュメントのファイル ID を指定します。
冒頭で触れた方から提供いただいたサンプルデータそのままですが、下図のように差し込まれる個所に 「 」 で囲んだ差し込みキーワードを設定したテンプレートとなる Google ドキュメントを用意し、そのファイル ID を設定します。
「ファイル ID」とは、GAS の API などでも使用する個別のファイルを指定するための ID のことです。それぞれのファイルを開いたときの URL から確認できます。
差し込みキーワードの前後に付加する文字は、下図のように初期設定では 「 と 」 に設定されていますが、スプレッドシート上で変更が可能です。
⑵ 差し込まれるデータが保存されたスプレッドシートのファイル IDを指定
次は、前項で指定した Google ドキュメントに差し込まれるデータが保存されている Google スプレッドシートのファイル ID を指定します。
⑶ このファイル内のシートを確認する
前項までの 2つのファイル ID を設定して、「シートの情報を取得」ボタンを押すことで、下図のようにそれぞれのファイル ID の下にファイル名が表示されるなど、指定されたファイル ID の内容が確認されます。
それぞれのファイル ID を入力した右隣のセルには、当該ファイルへのリンクが「LINK」として表示されているので、それぞれのデータをすぐに確認できます。
⑷ 対象となるシートを、右のドロップボックスから選択する
前項で (2) で指定されたスプレッドシートの内容を取得したことで、下図のように差し込み対象となるシートを選択します。 ※シート名に続けて、当該シートの行数が合わせて表示されています。
⑸ 出力するドキュメントのベースファイル名を設定する
出力する Google ドキュメントのベースとなるファイル名を設定します。
⑹ 差し込まれるシートの情報を取得する
前述の ⑵ と ⑷ で指定したスプレッドシートのシートから、差し込まれるデータの情報を取得するために、「差し込みデータの確認」ボタンを押します。
プログラムが実行されると、下図のように差し込まれるシートの見出し行の情報が取得されます。
基本的には、列 C の内容が差し込みキーワードとなります。上図の例であれば、タイムスタンプの前後に「 」を付けた「タイムスタンプ」が差し込みキーワードとなります。
ただし、見出し行の文字列が長すぎる場合には、先頭 8文字に切り詰められます。
例:
質問事項・分からなかったことなど書き留めてください
↓
質問事項・分から
列 D のチェックボックスは、デフォルト状態ではすべて ON になっています。このチェックボックスが ON になっている列に対して、データの差し込みが行われます。
チェックボックスが ON になっていて、その差し込みキーワードがテンプレート中に存在していなくても、エラーにはなりません。
誤動作を防止するためにも、テンプレート中に存在しない差し込みキーワードの行については、チェックボックスを OFF にしておきましょう。
列 E が空欄であれば、前述のように列 C の内容から差し込みキーワードが設定されますが、下図のように列 E に文字列が指定されていれば、その文字列が優先して差し込みキーワードとして使用されます。
差し込みキーワードは、半角/全角や大文字/小文字を判別するので注意してください。
⑺ ファイルの出力先を指定して、差し込みを実行する
差し込みによって作成されるファイルが保存されるフォルダを、次の 1. ~ 3. で選択します。
テンプレートとなるファイル ⑴ のあるフォルダ
差し込み元のスプレッドシート ⑵ のあるフォルダ
このスプレッドシートのあるフォルダ
場合によっては、それなりの数のデータが作成されることになるため、実行する Google アカウントのマイドライブのルートフォルダに作成すると煩雑な感じになってしまうと想定して、上記の 3種類のフォルダから出力先を選択できるようにしています。
また、作成される Google ドキュメントと同じ内容を、PDF ファイルとして書き出すかどうかを、チェックボックスで指定できるようになっています。
上記の 2点を設定して、「差し込み実行」ボタンを押すと、差し込みが開始されます。その結果、下図のように差し込みが行われた Google ドキュメントが作成されます。 ※⑸ で「差し込み結果」をベースとなるファイル名として設定しています。
All_ ではじまるファイルには、差し込まれた内容が連結されて保存されています。 ※使用しているデータは、発端となった Facebook の投稿主から提供いただいたもので、このように公開することについて承諾を得ていますが、当該個人を特定することはおやめください。😘
「PDFへの書き出し」を ON にしていると、下図のように同じファイル名で PDF 形式でも書き出します。 ※Google ドキュメントの内容を PDF に変換している都合上、PDF だけの出力は行っていません。
最後に
久しぶりにそれなりのボリュームの GAS のプログラムを作成した感じがしています。発端となった Facebook の投稿主には、上記のプログラムを提供させていただき、
といったコメントをいただきました。喜んでいただけたようでうれしく思います。😍
Google アプリを多用するようになり、印刷することはかなり減りましたが、こういった表(スプレッドシート)からの差し込みはまだまだ重宝するのではないでしょうか? Microsoft Word には実装されている機能ではあるものの、Google ドキュメントには実装されていない機能なので、うまくお使いください。
とは言え、Google アプリと連携していることで、差し込んで作成されたデータをメールで送信する(もしくは、共有する)といった流れも考えられますが、今回のプログラムはここで一区切りにしておきます。
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 230行くらいのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍