AppSheetのlandscape問題


AppSheetでアプリを作っていて1点問題が解決できないままだったのですが、Google Community のスレッドを読んでいるうちに解決策が見つかったので簡単に書いておきます。

レポートを横置きにしたい

例えばAppSheetのAutomationで一覧表をPDF出力する場合にGoogle Docsをテンプレートとして使うことができます。

Use Google Docs templates

このテンプレートがポートレート(縦置き)の場合は問題ないのですが、ランドスケープ(横置き)にしたくても右側に余白ができてしまって内容がポートレートの配置のまま出力されてしまう問題がありました。

(AppSheet自体開発が進められているのでいるので後のバージョンで改修されている可能性もあります。)

Google Communityのスレッド

Trouble with landscape pdf attachment

キーワード検索でたどり着いたのが上のスレッド。

同様に困っている人がいる模様。で、解決策の一つとして

Try to use Word instead of Google Docs. Its a solve my problem

https://www.googlecloudcommunity.com/gc/AppSheet-Q-A/Trouble-with-landscape-pdf-attachment/m-p/263647/highlight/true#M43492

Google Docs の代わりに Word をテンプレートとして使えば良いらしいのですが、私の.docxファイルが良くないのかエラーで出力できず。また、なるべくGoogle Docs で済ませたいという勝手な思いもあって横置きは保留にしていました。

HTMLをテンプレートにする

AppSheetの開発がある程度一段落したのであらためて横置きについて調べていると、上のスレッドにコメントが追加されていました。

… I exported my GDoc template to HTML file …

https://www.googlecloudcommunity.com/gc/AppSheet-Q-A/Trouble-with-landscape-pdf-attachment/m-p/421281/highlight/true#M166635

これまでHTMLをテンプレートにするという意味が理解できていなくて、このメッセージを読んでやっとGoogle DocsのダウンロードでHTML出力できることがわかりました。

File -> Download -> Web Page

このメニューでzipファイルがダウンロードされ、zipファイルを解凍するとHTMLファイルが生成されます。

あらためてGoogle Docsのテンプレートをランドスケープ(横置き)に設定してHTMLファイルを取得してAppSheetのテンプレートに指定したところ、ポートレートの配置のままになってしまいました。

ここでHTMLファイルをブラウザで開いて開発ツールで確認すると次のようなスタイルが見つかりました。

.c1 {
    background-color: #ffffff;
    max-width: 451.3pt;
    padding: 72pt 72pt 72pt 72pt;
}

どうもこの max-width が原因の様子。

ということで HTMLのテンプレートをエディタで開いて <head>...</head> にある max-width を削除したところ、やっとランドスケープ(横置き)でPDF出力することができました。

communityでは「custom mergins を全て 0 にすればOK」というコメントもあるのですが、私の環境ではうまくいかず。

まぁテンプレートとして使うのでGoogle DocsからHTMLにエクスポートしておくほうがうっかり編集することも少なくてソースコード管理もできるので比較的安心かもしれません。

横置きの出力ができなくて放置していた課題もあるので、HTMLテンプレートを活用して進めてみようと思います。