[GAS] スプレッドシートとHtmlServiceでHTMLパーツを文字列データとして量産する小ネタ

記事
IT・テクノロジー

はじめに

スプレッドシートから商品情報を参照し、商品ごとのHTMLパーツを自動生成したい、生成したHTMLはブラウザ表示させるのではなく、商品ごとの文字列データとして、スプレッドシートで管理したい、という要望に適した、GASをテンプレートエンジン的に使用する小ネタです。

本記事はQiitaで公開した記事の要約版となります。

基本的なロジックとしては、テンプレートとなるHTMLパーツを取得し、目印として埋め込んだマーカー(以降、handler)を差し替えるという流れになります。この際GASのHtmlServiceを利用しますが、そのままレンダリングするのではなく文字列として生成する点で、通常の利用用途とは異なります。

※HtmlService
利用用途の多くはGoogleサイトやGoogleフォームでは使えない機能を実装したい場合やSPA(Single Page Application)など、より自由度の高いUI構築が必要な場合かと思います。そのため、通常はスタンドアロンスクリプトとして構築し、デプロイ、httpsレスポンス表示、もしくはコンテナバインドスクリプトにおけるカスタムプロンプト表示用という使い方がメインです。

ロジック

事前準備としてプロジェクトへテンプレート登録しておきます。

1-テンプレートの読み込み
テンプレートを読み込み、配列へセットしておきます。

2-データを取得し順次テンプレートへ展開
ヘッダー行を削除し、順次テンプレートへ展開します。
この際、やりがちなミスは、テンプレートに設定していないhandlerへの値セット、ないしはその逆、設定したhandlerへ値をセットしない、セットし忘れることです。当然エラーになります。

3-テンプレートを文字列データとして配列へセット
HtmlOutputとして通常展開した後、文字列として取得するには、Blob変換を経由してgetDataAsString()とする必要があります。

利用場面

ヤフオクなどのショップ系サイトに限らず、ブログ等でも、HTMLタグが投稿できるサービスなら応用可能かと思います。

設置サポート及びカスタマイズ相談

かなりニッチなツールが多いと思いますが、案件応募用にテスト開発したツール類など、カスタマイズ前提で開発受付いたします。

もちろん、そのまま利用するのも良いですし、プロジェクト内の部品として組み込んだり、本ツールに機能追加するなど、ご要望に応じてカスタマイズいたします。

当方にて出品中のサービスを介してのみ受付致しますので、お気軽にお問い合わせください。

本ツール以外のGAS開発に関するご依頼やご相談も歓迎いたします。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す