0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Forms→SpreadSheet→Documents→Sitesで“みんなで作るFAQ”を自動公開する仕組みを作ってみた

Last updated at Posted at 2025-11-21

はじめに

寄せられた質問に複数人で答えていくと、自然にFAQが積み重なっていきます。
それをナレッジとして整理・公開できれば便利ですが、手動でまとめるのは手間がかかります。
そこで「みんなで作るFAQを自動化する仕組み」を考え、まずはGoogleサービスを使って試作しました。
Formsで質問を集め、SpreadSheetで管理し、Docsで回答を記入し、Sitesで公開する流れです。

その後、環境に合わせてMicrosoftサービスでも同様の仕組みを展開し、Qiitaにはそちらを先に公開しました。
この記事では、その前段階のGoogle版をご紹介します。

全体フロー

  1. Google Forms:質問を収集
  2. Google SpreadSheet:「回答中」シートに自動登録(Forms回答が入ると自動で行を追加)
  3. Google Apps Script:回答中シートに新しい行が追加された時点でDocsを生成
  4. Google Docs:質問ごとに新規作成し、回答欄・コメント欄をテンプレート化
  5. Google Sites:Docsをまとめて公開(現状は手動、将来的に自動化予定)

整理用シートの設計

「回答中」シートは以下のような列構成で管理します。

内容
A 通番
B 質問文
C 質問カテゴリ
D 質問者名
E Docsリンク
F 状態(回答中/回答済/公開済)

Docs生成コード

function generateDocsForUnlinkedQuestions() {
  const sheetName = "回答中";
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const data = sheet.getDataRange().getValues();

  for (let i = 1; i < data.length; i++) {
    const docLink = data[i][4]; // E列:Docsリンク
    if (!docLink) {
      const id = data[i][0];       // A列:通番
      const question = data[i][1]; // B列:質問文
      const asker = data[i][3];    // D列:質問者名

      // Docsのタイトルに通番を付与
      const docTitle = `${id}_質問`;
      const doc = DocumentApp.create(docTitle);
      const body = doc.getBody();

      // 本文に通番を明示的に追加
      body.appendParagraph(`番号:${id}`);
      body.appendParagraph(`📝 質問内容:\n${question}`);
      body.appendParagraph(`👤 質問者:\n${asker}`);
      body.appendParagraph(`✍️ 回答:\nこの欄に自由に回答を記入してください。\n【回答者名】を冒頭に入れてください。`);
      body.appendParagraph(`💬 コメント欄:\n補足や意見があればこちらに記入してください。`);

      const url = doc.getUrl();
      sheet.getRange(i + 1, 5).setValue(url);       // E列にURL
      sheet.getRange(i + 1, 6).setValue("回答中");  // F列に状態
    }
  }
}

生成されるDocsの表示イメージ

番号:001

📝 質問内容:
・・・

👤 質問者:
山田 太郎

✍️ 回答:
この欄に自由に回答を記入してください。
【回答者名】を冒頭に入れてください。

💬 コメント欄:
補足や意見があればこちらに記入してください。

運用の工夫

  • 回答の進め方
    「回答中」シートに複数のサポーターが自由に回答を書き込みます。
    月1回の相談会で「どんな回答が出ているか」をみんなで確認し、その場で新しい回答や補足があれば追加します。
    その時点で出揃った回答を入力後「回答済」シートへ移動します。
      
  • 状態管理
    状態列は「回答中/回答済み」としています。
    • 回答中:複数人が書き込み中、相談会で確認予定
    • 回答済み:相談会で確認し、相談会で出てきた内容を追加したもの
        
  • 公開までの自動化
    Docsでみんなが回答を書き込める仕組みまではできているが、Sitesへの自動公開は未実装 → 今後の課題

まとめ

  • Forms→SpreadSheet→Docs→Sitesの流れで「みんなで作るFAQ」をGoogleサービス内で自動化できる
  • 「回答中」シートを基点に、質問ごとにDocsを新規作成し、リンクを記録することで共同編集がしやすくなる
  • 状態列を設けることで進捗管理も可能
  • 今後は「回答済」シートへの移動やSitesへの自動公開など、さらに発展させる予定

同じような課題を抱えている人の参考になれば幸いです。

参考リンク


※この記事は現在勉強中の内容を整理したものであり、技術的に不正確な点が含まれている可能性があります。
ご指摘や改善案などがあれば、コメントで教えていただけると嬉しいです。


0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?