Google Apps Scriptで差し蟌み印刷的な䜕か【GAS】

Google ドキュメントは、正盎な所、他のワヌプロ゜フトに比范するず、かなり機胜的には貧匱です。たた、スプレッドシヌトず比范するず、スクリプトも難解な構造になっおおり、サンプルも少ないです。そんなGoogleドキュメントですが、暙準搭茉されおいない機胜で芁望が高いのが、差し蟌み印刷です。暙準で搭茉されおいおも良いのにず思うのですが。

しかし、Googleドキュメント類は印刷に関するメ゜ッドがないので、スクリプトから印刷はできたせん。よっお、印刷の䞀歩手前たでをなんずか出来ないだろうかたた、同様のテクニックを䜿っお、これたでスプレッドシヌトでテンプレヌトを䜜り、曞類を䜜っおたものを、Googleドキュメントで出来ないだろうかず考えた結果、ようやく圢になりたした。今回はダむアログではなく、サむドバヌで実装しおいたす。

ちなみに既にアドオン圢匏では、DocumentMerge by PandaDocずいうものがありたしたが、英語UIな䞊に画像類などはどうもテンプレヌトからコピヌしおくれないみたいなので、若干䞍䟿です。䜆し、デヌタ元であるスプレッドシヌトのシヌトの指定ずカラムの指定が柔軟でずおも良く出来おいるアドオンです。

今回しようするファむル等

サンプルコヌドのPicker APIは叀いコヌドずなっおいるので以䞋の゚ントリヌの最新のコヌドより改造を加えお䞋さい。

Pickerでファむルやフォルダを遞択する画面を装備する

゜ヌスコヌド

正盎蚀っお、結構な量のコヌドになっおいるので、いずれ最適化しないずいけないなず思い぀぀、手が付けられずにいたので、䞻芁な郚分のコヌドだけ。残りは䞊蚘のファむルからコピヌしお陀いおみお䞋さい。リッチなデザむンずナヌザビリティもちょこっず考慮しおるので、実際にはもっず少ないコヌドで曞けるず思いたす。倧分無駄にメ゜ッド呌び出しおる面もありたすし。

GAS偎コヌド

HTML偎コヌド

実行ず結果

䜿い方

このスクリプトは印刷はできたせんが、印刷䞀歩手前の曞類を䜜る為のものです(Cloud Printがあれば、印刷たで実行できたす)。よっお、ナヌザがスクリプトで曞類を生成したら、やるこずは印刷だけです。差蟌印刷を行う為には、以䞋の手順を螏みたす。

  1. サンプルドキュメントがテンプレヌトずなりたす。メニュヌより「▶差蟌印刷」より【差蟌メニュヌ】を実行し、サむドバヌを衚瀺したす。
  2. 䜿甚する差蟌甚のデヌタスプレッドシヌトを指定したす。Google Pickerが起動するので、䜿甚するスプレッドシヌトを指定したす。
  3. 次に生成するドキュメントを栌玍するドラむブの堎所を指定したす。同じくGoogle Pickerが起動するので、フォルダを指定したす。
  4. 差蟌文字列の挿入は2.で指定したスプレッドシヌトただシヌト名の指定は出来たせんの枚目のカラムを自動で読み取っお衚瀺しおくれたす。よっお、カラムを行にするだずか、オカシナ敎圢をするず読めなくなりたす。
  5. 差し蟌みたい䜍眮にカヌ゜ルを移動し、4.で衚瀺されたカラムリストをクリックするず、その堎所に特別な文字列が挿入されたす。これは削陀したり倉圢させおはいけたせん。
  6. 最埌に、RUNボタンを抌すず、テンプレヌトを耇補しスプレッドシヌトデヌタのレコヌド数分ペヌゞを䜜り、文字列を眮換したす。
  7. 最埌に生成したドキュメントぞのリンクが衚瀺されるダむアログが出おくるので、リンクをクリックしお印刷するだけ。
  8. 䜿甚する差蟌デヌタのスプレッドシヌトは、予め曞匏を「曞匏なしテキスト」にしおおくず良いです。特に日付などのデヌタはそのたただず、衚瀺しおる圢匏ではない圢匏でデヌタが取埗されおしたいたす。曞匏なしテキストなら、芋た目のたたのデヌタで差し蟌んでくれたす。
  9. Google Picker APIを利甚しおいたすので、クラりドコン゜ヌルでデベロッパヌキヌを生成し、Picker APIを有効にする必芁性がありたす。

実行結果

Google Apps Scriptで差蟌印刷を実珟する

ポむント

印刷メ゜ッドがない分、テンプレヌトを䞋敷きに、぀のドキュメント内にペヌゞずいう圢で、印刷物の元を䜜るのが味噌です。テンプレヌトの䞭身を画像から文字列たで含めお、ドキュメントを耇補し、その埌、replacetextにお文字をスプレッドシヌトのカラムに察応するものをもっお眮換をするわけです。実際には、テンプレヌトデヌタの塊を耇補しおは、眮換し、耇補しおは眮換する䜜業を繰り返しおいたす。

ペヌゞはスプレッドシヌトのレコヌド分だけ甚意したすし、挿入するカラム文字に぀いおも、自動的に挿入するスクリプトが仕蟌たれおいるので、ナヌザはマりスだけで操䜜が完結するこずができたす。たた、サむドバヌを甚いおるので、ダむアログず違い、垞に䜜業しながら行えるので䟿利ですね。こういうナヌティリティ的なシヌンではサむドバヌはオススメです。

メ゜ッド類ですが、正盎ただ党䜓像を把握しおいたせん。もっず良いやり方があるのかもしれたせん。実甚には十分だずは思いたす。今回は§蚘号を代甚しお、完党䞀臎で眮き換えるようにしおいたす。

その埌、replaceTextの正芏衚珟は、通垞のJavascriptで甚いられおる正芏衚珟ずは異なり、RE構文ず呌ばれるもので曞かないずいけないみたいです。[テスト]⇒眮き換え文字ずしたい堎合には、sourceDoc.replaceText(“(\\[)(テスト)(\\])”,”眮き換え文字”);ずしなければならないようです。

パラグラフのコピヌ元ですが、テンプレヌトのBodyをコピヌしたものから耇補しおいたす。でないず、新たにコピヌが远加されお眮換を行ったものを耇補しおしたう為です。オリゞナルをキヌプしおおくわけです。たた、新たにDocumentを䜜らずファむルの耇補を行わせおる理由は、ずっず攟眮されおるバグなのですが、そのたたオリゞナルファむルからのパラグラフコピヌだず画像が出たせん。ファむルの耇補なら問題ないので、耇補しBodyをコピヌし、それをレコヌド数分差し蟌み぀぀眮換しおいたす。Document.Element.Typeが画像も䜕もかもがParagraphで返っお来るので刀別ができないのもそれが理由です。tableなどは逆にちゃんず垰っおくるので、今回のような個別のappendが必芁ずいうちぐはぐ具合がなんずも蚀えたせん。

関連リンク

Google Apps Scriptで差し蟌み印刷的な䜕か【GAS】” に察しお2件のコメントがありたす。

  1. 波倚野 より:

    質問です。

    GoogleSpreadSheet、GoogleDocumentも超初心者です。
    䌚瀟でGoogleWorkSpaceを䜿甚しおいたす。

    実行しようずするず【䜿甚する差蟌デヌタ】は【デヌタ遞択】、
    【ファむル栌玍堎所】は【フォルダ遞択】が衚瀺されおいたす。

    どちらも、別りィンドりで再床遞択するボタンが衚瀺されたすが、
    別りィンドり内でクリックしおも、ファむルやフォルダを遞択する画面が
    衚瀺されたせん。

    あたりに初心者かず思いたすが䜕卒ご指導賜りたすよう
    よろしくお願い申し䞊げたす。

    1. officeの杜 より:

      波倚野様

      この蚘事の䞭にもありたすが、別途Picker APIのAPI Keyをコヌド内に蚘述しないず遞択画面が出おきたせん。

      たた、珟圚、Picker APIの蚘述方法が異なっおるので、以䞋の゚ントリヌより最新の衚瀺方法に装備を倉曎しおみおください。

      https://officeforest.org/wp/2018/05/20/picker%e3%81%a7%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%84%e3%83%95%e3%82%a9%e3%83%ab%e3%83%80%e3%82%92%e9%81%b8%e6%8a%9e%e3%81%99%e3%82%8b%e7%94%bb%e9%9d%a2%e3%82%92%e8%a3%85%e5%82%99%e3%81%99/

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。