Dekaatama’s blog

でかあたまのブログへようこそ!日々のよしなしごとを書いています。

Google Apps Script の勉強 その34 GoogleスプレッドシートをPDF出力し印刷する

Dekaatamaです。

コロナ対策で自宅にいる時間が増えました。

以前の記事において

dekaaatama.blogspot.com

Chromebookの画面を見ながら付属のタッチペンで項目にチェックを入れ納品書・請求書を作成 

最終的には「納品書・請求書」をCloud Print経由で手元のプリンターで印刷するのですが、印刷設定は、あまり重要視されていないためか複数部数の印刷に対応していないなど使い勝手がよくありません。

※ Cloud Printは、「2020/12/31に廃止される」と発表されました。

入力したデータは、Googleスプレッドシートに保存していますが、

1 印刷物をPDF形式でも保存する
2 そのPDFを使って印刷する

に改良(?)することにしました。

1 については、以下のHPが大変参考になりました。

officeforest.org

問題は、2でした。

作成されたPDFをどうやってオープンするかでした。

GASから自動でオープンする方法は見つけることができませんでしたので最低限「1クリック」は、必要なようです。

次のHPを参考にダイアログを表示させることにしました。

tonari-it.com

以下のような感じにしました。

function showDialog(){
  var html = HtmlService.createHtmlOutputFromFile('dialog');
  SpreadsheetApp.getUi().showModalDialog(html, "表題");
}


次に問題になったのはGASからHTMLへ変数を受け渡す方法でした。

以下のHPが大変参考になりました。

 
 
 
【コード.gs】
 
function doGet() {
var sh=SpreadsheetApp.openById(“スプレッドシートID”);
var ss=sh.getSheetByName(“シートI名”);
var msg=ss.getRange(2, 1).getValue();
var t=HtmlService.createTemplateFromFile(“index”);
t.msg=msg;
return t.evaluate().setTitle(“GASとスプレッドシートで動的なWebサイトを作る”);
}
【index.html】
 
<!DOCTYPE html>
<html>
<head>
<base target=”_top”>
</head>
<body>
<?= msg ?>
</body>
</html>
 
印刷は、「1クリック」で終了することは出来ず、以下の手順を踏むことになりました。
 
1 「ここをクリック」:PDFが、ダイアログ内に表示される。
 
2 [➚]:ポップアウトすることによりPDFがブラウザーに表示される。

3 [CTR+P]:印刷用?のPDFがブラウザーに表示される。
 
4 [CTR+P]:印刷設定画面が表示される、設定してプリントする。

 
手数がめっちゃ増えてしまいました。
 
実用になるか…
以上です💘