如何将一个简单的计算字段添加到 google 表单?

How to add a simple calculated field to a google form?

我正在寻找一种在 google 表单中添加简单计算字段的方法,该字段将依赖于其他字段的值。

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

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

我查看了 google 的教程,发现只有插件在我的理解中是表单宽的,而我正在寻找更像自定义表单字段的东西。

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

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

脚本只能影响表单的创建和 post-提交处理。您不能对用户当前正在查看的 "live" 表单进行任何更改。您可以做的是在提交带有计算的摘要的表单后向用户发送一封电子邮件。如果他们发现任何错误,您可以在 getEditResponseUrl() 中包含 link。

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

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

脚本很简单,首先你要在"tools"菜单中打开脚本编辑器,然后粘贴下面的代码。您只需要 "call" sheet 代码中的名称,然后标记公式所在的列 are.In 这种情况下 hoja1 是 "BD ingresos" 和 hoja2 是 "DB gastos"

在这种情况下,我部署答案的 sheets 是 "BD ingreso" 和 "BD gastos",我计算内容的列是 A、B、C、D 和"BD ingresos" 中的 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"

正如其他人提到的,Google Forms 不支持实时计算值。但是,有 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