2

私はいくつかのGoogleフォームを持っており、それらは毎回約300〜400のフォーム送信で頻繁に再利用されます。

これまで、フォームを手動でリセットする方法は2つあります。

  1. フォームエディタを開いたままフォームを削除します。
  2. フォームの送信を含む行を選択し、右クリックして[削除...行]を選択します。

スクリプトでは、のようなメソッドを見つけることができませんform.reset()。このメソッド.DeleteRows(fromRow, to Row)は行を削除するだけですが、カウンターには影響しません。

では、Google Appsスクリプトを使用して「フォームのリセット」タスクを自動化するにはどうすればよいですか?
または、スクリプトで2番目の方法を模倣する方法は?

ありがとうございました!

4

2 に答える 2

2

Googleフォームは新しいフォームエディタを作成しました(ほんの数週間前にリリースされました)。この新しいフォームエディタには、「すべての回答を削除する」オプションがあります。したがって、1つのオプションは、新しいフォームエディタでフォームを再作成することです。(新しいスプレッドシートから、[ツール]> [フォームの作成]をクリックします)。

注:この新しいフォームエディタは、GoogleAppsユーザーはまだ利用できません。

于 2013-02-22T09:40:51.947 に答える
1

を使用する実用的なソリューションがありますdeleteRows()。なぜそれがうまくいかなかったのかわかりません。あなたのコードを見るのは面白いでしょう。

新しいForms製品(2013年2月)は、従来のフォームとはまったく異なります。このソリューションは、従来のフォームでのみ機能します。

とにかく、これが私が持っているもので、スクリーンショットの前後にあります。このtidy()関数は、削除する行数を渡すことで呼び出すことも、ここに示すようにメニューから呼び出すこともできます。このスクリプトのより完全なバージョンは、要点として入手できます

/**
 * Standard onOpen provided in script template.
 */
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{name : "Read Data",functionName : "readRows"},
                 {name : "Tidy Form Responses", functionName : "tidy"}];
  sheet.addMenu("Script Center Menu", entries);
};

/**
 * Prompt user for the number of form response rows to remove, then delete them.
 * Assumes that the form responses are in the active sheet, that there is one
 * row of 'headers' followed by responses (in row 2).
 *
 * @param {number} thisMany (Optional) The number of rows to remove. If not
 *                          specified, user will be prompted for input.
 */
function tidy(thisMany) {
  if (tidy.arguments.length == 0) {
    thisMany = Browser.inputBox("How many responses should be tidied?");
  }

  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.deleteRows(2, thisMany);
}

フォームの回答とカスタムメニューを含むスプレッドシート

その間

スクリプト操作、inputBox

フォームの回答が2つ少ないスプレッドシート

于 2013-02-22T16:20:06.760 に答える