Amazonで商品を見るセール会場へ

GAS│スクリプトプロパティをHTML内で使う方法

公開してよいスクリプトプロパティをHTMLのリンクへ渡します。

ここではPUBLIC_LINKにCGメソッドの公開URLを保存し、リンクとして表示します。

iframeの埋め込み先による表示制限と切り分けるため、最小例はリンクにしています。

最終確認は2026年10月2日です。

ローカルの模擬検証を行いましたが、Googleへの認可・実シートへの反映・Driveの実ファイル列挙・Webアプリの配備は未検証です。

目次

練習用の入力と設定

ZIPを展開し、使う記事のarticle-325.jsだけをApps Scriptへ保存します。

同名の関数を含むため、別の記事のコードを同じプロジェクトへ混ぜないでください。

データ整理の練習コードとHTML例をダウンロード(ZIP)

設定名設定する値
PUBLIC_LINKhttps://cg-method.com/ など、このサイトの公開URL。APIキーや非公開の照会URLは入れない

プロジェクトの設定でスクリプトプロパティを入力します。

まず新規の練習データを使い、要求される認可範囲と操作内容を確認してください。

入力例と実行する関数

https://cg-method.com/?a=1&b=2を渡す例です。

生成したHTMLのリンク先を確認し、doGetでは設定したPUBLIC_LINKが使われることをテストします。

WebアプリではdoGetがHTMLを返します。

まずテスト用の配備で対象ユーザーと実行するアカウントを確認し、意図しない公開範囲へ変更しないでください。

閲覧者へ公開されるHTMLとURLには個人情報や秘密を入れず、シートを読む権限と閲覧者のアクセス条件を実環境で確認します。

// このコードは記事ごとに別のApps Scriptプロジェクトへ保存します。
function required_(key) {
  const value=PropertiesService.getScriptProperties().getProperty(key);
  if (!value) throw new Error(key+'を設定してください');
  return value;
}
function safeCell_(value) {
  const s=String(value);
  return /^[=+@-]/.test(s) ? "'"+s : s;
}
function escapeHtml_(value) {
  return String(value).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
}
function https_(value) {
  const s=String(value).trim();
  if (!/^https:\/\/[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?(?::443)?(?:[/?#][^\s<>"'\\]*)?$/i.test(s)) throw new Error('HTTPS URLを確認してください');
  return s;
}
function sourceSheet_() {
  const sheet=SpreadsheetApp.openById(required_('SPREADSHEET_ID')).getSheetByName(required_('SHEET_NAME'));
  if (!sheet) throw new Error('対象シートがありません');
  return sheet;
}
function publicLinkHtml_(value) {
  const url=https_(value);
  // 公開してよい、このサイトのURLだけを渡します。
  if(!/^https:\/\/cg-method\.com(?:[:/?#]|$)/i.test(url)) throw new Error('cg-method.comの公開URLを指定してください');
  return '<!doctype html><html lang="ja"><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>公開リンクの練習</title><body><p><a rel="noopener noreferrer" target="_blank" href="'+escapeHtml_(url)+'">CGメソッドを開く</a></p></body></html>';
}
function demoPublicLink(){return publicLinkHtml_('https://cg-method.com/?a=1&b=2');}
function doGet(){return HtmlService.createHtmlOutput(publicLinkHtml_(required_('PUBLIC_LINK')));}

確認結果と切り分け

条件結果
未設定・他のホスト・不正URLHTMLを返す前に停止
URLの区切り記号属性内でエスケープして出力
秘密情報ブラウザーへ送られる値は隠せないため入力しない

Node.jsの模擬検証は5記事合計69ケースです。

純粋関数の結果と、模擬のGoogleオブジェクトで対象選択・書込先・失敗時停止を確認した範囲であり、実サービスの成功を示すものではありません。

停止と戻し方

この例は定期トリガーを作成しません。

既存トリガーから呼ぶ変更を加える場合は、まず手動の1回を確認し、停止時にはそのトリガーを止めます。

Webアプリを公開している場合は配備を停止するか、保存した旧版へ戻し、公開ページを再読み込みして確認します。

プロパティの変更は開いたページへ自動反映されません。

公式資料

Driveフォルダの取得と列挙、シート範囲への反映、HTMLへの出力とエスケープ、Apps Scriptの利用上限を参照してください。

関連記事・旧実装の参考資料

従来のコードや外部の参考例は、本稿の練習ZIPと内容が異なる場合があります。

今回のコードは記事ごとに別のプロジェクトへ保存してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次