如何使用Zapier中的return或output转换html表单中使用的javascritp代码?

时间:2018-01-26 15:41:55

标签: javascript html zapier

我从不在Zapier编码,所以我在这里很少失明。对于经验丰富的编码器来说,对我来说仍然是一项挑战。所以我需要帮助,因为我是这种知识的假人。 : - (

我在Manychat中创建了一个触发器来触发zap并将Zapier的高度和重量传递给Zapier。

之后,我创建了一个动作Run Javascript并测试我传递的值weight = 81和height = 175

我使用了我在互联网上找到的javascript代码来计算人类BMI,但我仍然不明白如何定义函数来输出结果。

我需要接收BMI值和有关此结果的文本,但我现在知道如何使用Zapier中使用的输出返回来写入和传递这些值。

// Calculate BMI
function getBMImsg(bmi) {
  var bmiTable = [{bmi: 10,   msg: "você deve esta com inanição"}, 
                  {bmi: 15,   msg: "você está muito abaixo do peso"}, 
                  {bmi: 18.5, msg: "você está um pouco abaixo do peso ideal"}, 
                  {bmi: 25,   msg: "você está saudável!"}, 
                  {bmi: 30,   msg: "você está acima do peso ideal"}, 
                  {bmi: 40,   msg: "você está obeso!"}, 
                  {bmi: 50,   msg: "você está com obesidade mórbida!"}];
  var i;
  var text = bmiTable[0].msg;
  for (i = 0; i < bmiTable.length; i++) {
    if (bmi < bmiTable[i].bmi) {
      text = bmiTable[i].msg;
      break;
    }
  }
  return text;
}

function calcBMI(height, weight) {
  var bmi = 0;
  if (height > 0 && weight > 0) {
    bmi = Math.round((weight / Math.pow(height/100, 2)) * 10) / 10;
  }
  return bmi;
}

function bmiFunction() {
  var height = document.getElementById('height');
  var weight = document.getElementById('weight');
  var output = document.getElementById('output');
  var result = document.getElementById('result');
  var bmi = calcBMI(height.value, weight.value);

  if (bmi > 0) {
    output.textContent = bmi.toPrecision(3);
    result.textContent = getBMImsg(bmi)
  }
}
//document.getElementById("bmiform").addEventListener("submit", bmiFunction);
output = {bmiResult: bmiFunction}; //my wrong test to pass values

我不知道如何使用返回或输出格式化或传递结果。这是我的问题。在此代码中,Zapier不会出现错误,但id显示奇怪的字符,而不是我要传递给Manychat的bmi文本消息。

请教我怎么做。

非常感谢!

Marco Querini

1 个答案:

答案 0 :(得分:0)

就像我之前说过的,任何包含document 的代码都不会在Node.js中运行。即使此代码在浏览器中工作,您也需要针对Node环境进行调整。

一些快速解决方法:

  • var height = document.getElementById('height');应改为inputData.height(或者您已将其映射。

  • bmiFunction中,您需要将结果存储在output对象上:

    if (bmi > 0) {
      output.bmi = bmi.toPrecision(3);
      output.message = getBMImsg(bmi)
    }
    
  • 对于您的输出,您将返回一个函数,这不是您想要的。假设您的其他功能正确,“顶级”(在所有功能之外)应该只是:bmiFunction(),它将调用上述函数并设置output变量中的值。