web-dev-qa-db-ja.com

Googleフォーム/シートでフォーム送信の応答を編集するにはどうすればよいですか?

最近、私は調査を実施しています。 Excel Forms Onlineで作成を開始しましたが、いくつかの欠点に気付いた後、Google Formsに切り替えました。私はいくつかの障害を見つけましたが、私は行く準備ができていると思いました。

残念ながら、フォームに質問を追加し、回答(スペルミスなど)を変更し始めました。これにより、多くの問題が発生し始めました。該当する場合は、戻って新しい質問への回答をユーザーに尋ねるだけで十分です。さらに悪いことには、提出物をまったく変更できないことです。結果がフォームに保存されているため、フォームに接続されているスプレッドシートを編集できません。スプレッドシートを再生成すると、フォームで送信された応答が以前あったものを置き換えます。そのため、スプレッドシートをまったく編集できません。

ユーザーの送信された応答を手動で編集しようとする方法を検討してきました。リソースを見つけました ここでStack Overflowで 、および ここで製品フォーラムのGoogleグループで 、しかし残念ながら、私はすべての例を試しましたが、どれも動作しませんでした(はい、フォームのURLなどをすべて入力し、名前をスプレッドシート名に置き換えました)。

情報を入力した後も引き続き受信するエラーはTypeError: Cannot call method "getDataRange" of null. (line 8, file "Code")でした。しかし、シートは空ではなく、私はそれを知っています。

この作業を行う他の方法、またはシートの応答を潜在的に編集するより良い方法はありますか?

今すぐこれを行う唯一の方法は、手動で戻ってそのユーザーとしてフォームを再送信することです。ボックスをチェックし、コピーして貼り付けるのに10分かかるので、ちょっとした痛みです。さらに、昨夜、誤って1文字のコピーをスキップし、今度はもう一度やり直さなければなりません。

私がオンラインで見たものから、これは行うことができますが、私は何も試していません。フォームは現在公開中で、現在回答を受け付けています。スクリプトまたは他のツールを使用して応答を編集する方法がある限り、どのソリューションでも受け入れられます。そのため、すべてを自分で手動でやり直す必要はありません。

13
InterLinked

ここで提案されているコード は、2017年2月13日に自分で試したので動作します。

これを機能させるために私が従った手順は次のとおりです

  • まず、フォームを編集するかのようにフォームをロードします。
  • アドレスバーのURLでフォームの「フォームID」を探します。次のようになります。

https://docs.google.com/ .../forms/d /1ZIrWiRZQrUsz1y8OBoeB7AtCOM4Ax4FxAQm8xAR1OYo/ edit

  • したがって、この例のidは「1ZIrWiRZQrUsz1y8OBoeB7AtCOM4Ax4FxAQm8xAR1OYo」になります。
  • 次に、 https://script.google.com に移動します
  • Code.jsセクションに表示されるすべてのテキストを、それを編集した後、以下のYOUR_FORM_ID_HEREの代わりにフォームIDを配置した後、次のものに置き換えます。

    function dumpEditResponseUrlsForYourForm() {
       // Change this next line to use the id of your form
       var myFormId = "YOUR_FORM_ID_HERE";
    
       var form = FormApp.openById(myFormId); 
       var formResponses = form.getResponses();
       for (var i = 0; i < formResponses.length; i++) {
         var formResponse = formResponses[i];
         Logger.log(formResponse.getEditResponseUrl());
       }
    }
    
  • Google ScriptのWebページで[表示|ログ]をクリックします。フォームの回答へのリンクを含むウィンドウがポップアップ表示されます。
16
Brad Parks