如何在谷歌表单中添加一个简单的计算字段?

时间:2015-04-13 08:43:37

标签: google-apps-script google-form

我正在寻找一种方法来添加谷歌形式的简单计算字段,这将取决于其他字段的值。

第一个字段是简单的价格字段quantity * price = total_price,其中数量是用户输入的数字字段。

第二个字段是结束日期now() + X months,其中X由用户选择。

我看了一下谷歌的教程,发现只有我认识的插件才是我在寻找更像自定义表单字段的东西。

最好的解决方案是在用户更改其他输入值时计算字段,但确认页面中的简单文本也可以。

如果有人能指出我正确的方向,我将不胜感激。 感谢。

4 个答案:

答案 0 :(得分:4)

脚本只会影响表单的创建和提交后处理。你无法对" live"进行任何更改。用户目前正在寻找的形式。您可以做的是在提交表格并使用计算出的夏令时向用户发送电子邮件。如果他们发现任何错误,您可以包含指向getEditResponseUrl()的链接。

答案 1 :(得分:2)

正如其他人所述,Google表单不支持实时计算值。但是,有2个Google表单插件可让您做到这一点(免责声明:我创建了它们):

  1. 适用于您提到的简单表达式(数量*价格 = total_price),则可以使用Formfacade插件-https://formfacade.com/website/google-forms-calculated-fields.html
  2. 适用于复杂的订单,包括订单总额,交货费和 订单摘要,您可以使用Neartail插件- https://formfacade.com/neartail/automatically-calculate-total-amount-in-order-form.html

答案 2 :(得分:0)

我也有这个问题。我需要使用来自谷歌表单的答案来构建一个控制板,问题是:当您在提交答案的表单旁边的列中使用公式时,谷歌会插入一个新行,但不会复制公式,所以你最后一遍又一遍地复制和粘贴公式。

为了解决这个问题,我使用了一个脚本来复制公式所在的单元格并将其粘贴到答案所在的所有行中。

脚本非常简单,首先必须在“工具”菜单中打开脚本编辑器,然后粘贴下面的代码。您只需要在代码中“调用”带有名称的工作表,然后标记公式所在的列。在这种情况下,hoja1是“BD ingresos”,hoja2是“DB gastos”

在这种情况下,我有表格部署答案的表格是“BD ingreso”和“BD gastos”,我计算的东西的列是“BD ingresos”中的A,B,C,D和E,与“BD Gastos”。

(西班牙名字,对不起)

// 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);   
}

Then you have to create a trigger in the script editor as this image shows. Set the trigger to launch the code "actualizar" with the event "from the spreadsheet" "on form submit"

答案 3 :(得分:0)

不支持基于Google输入的实时计算。脚本可以部分解决问题,如上面的答案所述。

有些替代方法可以让您创建表单字段,然后为每个字段提供一个变量名。您可以使用这些变量进行计算。

一种类似的替代方法是Clappia(www.clappia.com)。

免责声明:我与Clappia相关。