web-dev-qa-db-ja.com

単純な計算フィールドをGoogleフォームに追加する方法は?

他のフィールドの値に依存する単純な計算フィールドをGoogleフォームに追加する方法を探しています。

最初のフィールドは単純な価格フィールド_quantity * price = total_price_です。ここで、quantityはユーザーが入力した数値フィールドです。

2番目のフィールドは終了日now() + X monthsで、Xはユーザーが選択します。

私はグーグルのチュートリアルを見て、カスタムフォームフィールドのようなものを探している私の理解ではフォームワイドであるアドオンだけを見つけました。

最善の解決策は、ユーザーが他の入力の値を変更したときにフィールドを計算することですが、確認ページの単純なテキストでも問題ありません。

誰かが私を正しい方向に向けてくれれば幸いです。ありがとう。

5
haki

スクリプトはフォームの作成と送信後の処理にのみ影響します。ユーザーが現在見ている「ライブ」フォームに変更を加えることはできません。あなたができることは、計算された夏時間を含むフォームが送信された後にユーザーにメールを送ることです。エラーが発生した場合は、getEditResponseUrl()へのリンクを含めることができます。

5
Spencer Easton

Googleの入力に基づくライブ計算はサポートされていません。上記の回答で述べたように、スクリプトによって部分的に問題が解決する場合があります。

フォームフィールドを作成し、各フィールドに変数名を指定できる代替手段がいくつかあります。これらの変数を使用して計算できます。

そのような代替手段の1つは、Clappia( www.clappia.com )です。

免責事項:私はクラピアに関連しています。

0
Ashutosh Kumar

私もこの問題を抱えていました。 Googleフォームから受け取った回答を使用してコントロールボードを構築する必要がありました。問題:回答が送信されたシートの横の列で数式を使用すると、Googleは新しい行を挿入しますが、数式を複製しないため、数式を何度もコピーして貼り付けることになります。

これを解決するために、数式があるセルをコピーし、回答があったすべての行に貼り付けるスクリプトを使用しました。

スクリプトは非常にシンプルです。まず、[ツール]メニューでスクリプトエディターを開き、以下のコードを貼り付けます。コードで名前を付けてシートを「呼び出し」、式がある列にマークを付けるだけです。この場合、hoja1は「BD ingresos」、hoja2は「DB gastos」です。

この場合、回答を展開するフォームがあるシートは「BD ingreso」と「BD gastos」です。何かを計算する列は、「BD ingresos」の「BD Gastos」と同じA、B、C、D、Eです。 」.

(スペイン語の名前、申し訳ありません)

// Activar la hoja actual 
var ss = SpreadsheetApp.getActiveSpreadsheet();
// se guarda hoja1 
var hoja1 = ss.getSheetByName("BD ingreso");
var hoja2 = ss.getSheetByName("BD gastos")

function actualizar() {

// obtener ultima fila de la hoja 
var ultimaFila = hoja1.getLastRow();

rellenarColumna("A",ultimaFila,hoja1);
rellenarColumna("B",ultimaFila,hoja1);
rellenarColumna("C",ultimaFila,hoja1);
rellenarColumna("D",ultimaFila,hoja1);
rellenarColumna("E",ultimaFila,hoja1);

// obtener ultima fila de la hoja 
var ultimaFila = hoja2.getLastRow();

rellenarColumna("A",ultimaFila,hoja2);
rellenarColumna("B",ultimaFila,hoja2);
rellenarColumna("C",ultimaFila,hoja2);
rellenarColumna("D",ultimaFila,hoja2);
rellenarColumna("E",ultimaFila,hoja2);

}


function rellenarColumna(pivote, ultimaFila,hojaTrabajo)
{
 //------------------------------------------------------------- 
 //celda que contiene la información que se va a pegar. 
  var celdaCopiarFormula = hojaTrabajo.getRange(pivote+"2");
  //obtener valor de dicha celda
 var valorCeldaCopiarFormula = celdaCopiarFormula.getFormula();

 //modificar rango para que pegue la información desde la ubicacion enviada hasta la ultima fila 
var rangoTotal = pivote + "2:" + pivote + ultimaFila; 


//definir ubicacion en donde se va a pegar la informacion
var destinoPegado = hojaTrabajo.getRange(rangoTotal);
destinoPegado.setFormula(valorCeldaCopiarFormula);   
}

次に、この画像が示すようにスクリプトエディターでトリガーを作成する必要があります。「スプレッドシートから」のイベントで「actualizar」のコードを起動するようにトリガーを設定します "フォームの送信"

0
David Alv