Google Forms にページのパスを差し込む
やりたいこと
- 各ページのフッタに 問い合わせフォームへのリンクを貼る
- その際、どのページからの問い合わせか分かるようにページのパスを解答欄に差し込みたい
前提知識
- フッタの作成(Swizzle後、カスタマイズ) 方法
- 各種情報取得
得られる効果
やっていることは Docusaurus から取れる情報 ( metadata.source )を Google Forms に GET で渡すだけ。
気の利いた仕組みに乗っかれた気持ちになれます。
実装箇所
src/theme/DocItem/Footer/index.tsx
export default function DocItemFooter(): ReactNode {
const {metadata} = useDoc();
...
const feedbackFormBase = 'https://docs.google.com/forms/d/e/XXXXXXXXXXXXXX/viewform';
const pageUrlParam = `entry.226114776=${encodeURIComponent(metadata.source)}`;
const feedbackFormUrl = `${feedbackFormBase}?${pageUrlParam}`;
...
return (
<>
<footer>
(Swizzle で生成された オリジナルのフッタ部分)
</footer>
{/* ✅ 差し込み箇所 */}
<div style={{ marginTop: '2rem', textAlign: 'right' }}>
<a href={feedbackFormUrl} target="_blank" rel="noopener noreferrer">
📩 このページについて問い合わせる
</a>
</div>
</>
)
実装箇所で明示する部分
feedbackFormBase
: フォームの URLpageUrlParam
: パスを差し込む項目(フォーム入力項目のどれか)のID
これは決まった名前ではなく、ただこういう変数名にしただけ
フォーム入力項目の ID (上記の pageUrlParam) 確認方法
- フォームの管理画面で、差し込みたい項目を足しておく
対象のページURL
という名前の欄を作ったとする
- フォームの管理画面で、右上の「︙」 → 「📝フォームに事前入力する」 のリンク辿る
- 注:「プレビュー」ではない
- フォームの事前入力画面で、
対象のページURL
欄に何か値を入れた状態にする - フォームの事前入力画面で、下の方の「リンクを取得」
このようにして取得したURLの、entry.NNNNNN
部分が、その項目のID。コードの pageUrlParam
のところに記入する。
url
https://docs.google.com/forms/d/e/XXXXXX/viewform?usp=pp_url&entry.NNNNNN=<入力した内容>
注意
entry.NNNNNN
部分は、質問を編集したりフォームの並べ替えで変わってしまう場合があるので、フォーム編集時はリンク無効になってないかを要確認