Googleフォームの回答データを編集する方法

Googleフォーム
スポンサーリンク

Googleフォームを回答してもらった後に、回答者から入力内容を間違えたので修正したいという声をもらいました。

今回はGoogleフォームの回答結果を管理者が編集する方法になります。

管理画面のギアアイコンから回答後に編集可能になります。

この場合回答ユーザーしか、編集用のURLが分かりませんし、回答後の画面にリンクが表示されますが画面を閉じてしまうと後からURLを入手することが出来ません。

スポンサーリンク

Googleフォーム回答編集URLを取得する

Googleフォーム回答編集URLを取得して、回答データに追記する方法です。

下記のようになるイメージです。

Googleフォームの回答シートA列に1列追加します

Googleフォームの回答シートのA列に1列追加します。

下記のスクリプトを、回答シートのツール > スクリプトエディタから追加します。

シートのキーIDとは 赤色のXXXX部分です
//docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0
function submitMail(e) {
  const sheetId = 'シートのキーID';
  const sheetName = 'シートの名前';

  // フォームの回答シートを取得
  const ss = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);

  // 最終行のA列にデータが入っていたら終了
  const lastRowA = ss.getRange(ss.getLastRow(), 1);
  if (lastRowA.getValue() !== '') {
    console.log('上書き防止のため終了');
    return;
  }

  // フォームIDを保存
  const formId = 'フォームID';

  // 回答データ一覧をフォームから取得
  const form = FormApp.openById(formId);
  const formResponses = form.getResponses();

  // 回答データ一覧をフォームから一番最後の編集用URL取得
  const lastResponse = formResponses[formResponses.length - 1];
  const editableUrl = lastResponse.getEditResponseUrl();

  // 回答用URLを作成
  const rowNumber = lastRowA.getRow() - 1;
  const editableStr = `=HYPERLINK("${editableUrl}", "編集用URL.${rowNumber}")`;

  // 回答用URLを最終のAセルへ実装
  lastRowA.setValue(editableStr);
}

トリガーをフォーム送信

トリガーをフォーム送信にすれば、フォームが送信されるたびに、A列へ編集用URLが記載されます。

この方法は作成時に最初から設定していた場合です。すでに作成終えてある程度データが溜まっている場合は、以下の方法で対応可能です。

後からGoogleフォームの回答編集用URLを取得

先程の方法は1件ずつ取得して、挿入していく方法でした。下記のスクリプトであれば一度に取得可能です。

シートのキーIDとは 赤色のXXXX部分です
//docs.google.com/spreadsheets/d/XXXXXXXXXXXXXXXXXXXXXXXXX/edit#gid=0

フォームIDとは 赤色のXXXX部分です
//docs.google.com/forms/d/e/XXXXXXXXXXXXXXXXXXXXXXXXXXX/viewform

/**
 * フォームの回答から、回答用の編集URLを取得して、回答データ一覧シートに挿入する。
 */
function createResponseUrls() {
  // 回答データ一覧シートの情報
  const sheetId = 'シートのキーID';
  const sheetName = 'シートの名前';

  // 回答データ一覧シートの取得
  const sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  const sheetData = sheet.getDataRange();

  // フォームの情報
  const formId = 'フォームID';
  const form = FormApp.openById(formId);
  const responses = form.getResponses();

  // フォームの回答を一つずつ処理する
  responses.forEach((response, index) => {
    // もし回答データ一覧シートのA列にデータがあればスキップする
    if (sheetData.getCell(index + 2, 1).getValue() !== '') {
      return;
    }

    // 回答用の編集URLの取得
    const editableUrl = response.getEditResponseUrl();
    const editableStr = `=HYPERLINK("${editableUrl}", "編集用URL.${index + 1}")`;

    // 回答用URLを回答データ一覧シートのA列に挿入する
    sheetData.getCell(index + 2, 1).setValue(editableStr);
  });
}

Googleフォーム回答編集URLの使い方

編集用URLをクリックし、編集フォームで書き換えます。

書き換えを行うと、下記のように自動でメモもつけてくれます。

分からないことなどあれば、コメントからお気軽に質問してください。
この記事書いた人
MITSUI

デジタルマーケティングに16年間従事しているMITSUIです。Google AnalyticsとGoogle Tag Managerが大好きで、これらのツールを活用した情報提供を行っています。ブログではデジタルマーケティングに関する情報や最新のトレンド、ベストプラクティスを紹介しています。

MITSUIをフォローする
Webでお困りごとなら、お気軽にご相談ください
まずは無料相談でお気軽にご相談ください。
Googleフォーム
スポンサーリンク
シェアする
MITSUIをフォローする

コメント

タイトルとURLをコピーしました