我从不在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
答案 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
变量中的值。