我正在与Asana和Zapier合作,我正在努力在一个项目中获取一个部分,如果它不存在,可以选择创建一个部分。这个动作在Zapier中并不存在。
我使用Zapier Code执行GET,并且该代码成功地将sectionId返回为0或Asana的实际id。
在下一个操作中,我再次执行Zapier Code,并且我尝试执行POST来创建Section,但前提是GET操作返回的sectionId为0。
我认为我遇到的问题与缺乏对异步编程的理解有关。但是,我或多或少地将代码从成功的GET操作复制到新操作中,并将HTTP请求更改为POST。
如果删除if语句,则POST按预期工作。
我遇到的问题是将fetch包装在if语句中。我试图简单地将它包装在if语句中(如果为0,则执行获取,否则返回不是0的ID),并将其创建为我放在if语句中的函数。我已经尝试了每种方法的一些不同配置,但不管怎样,我收到的错误是:
Bargle。我们在创建运行javascript时遇到错误。 :-(错误: ReferenceError:未定义输出
这是我的代码:
var sId = input.sId;
function doFetch(aPId) {
var settings = {
'method': 'POST',
'headers': {
'Authorization': 'Bearer <ACCESS TOKEN>',
'Content-Type': 'application/x-www-form-urlencoded'
},
'body': "name=Emails%3A"
};
var url = 'https://app.asana.com/api/1.0/projects/' + aPId + '/sections';
fetch(url,settings)
.then(function(res) {
return res.json();
})
.then(function(json) {
callback(null, json);
})
.catch(callback);
}
if(sId === 0){
return doFetch(input.asanaProjectId);
}
output = [{test: 123}];
有什么想法吗?
答案 0 :(得分:0)
好的,我修好了。我无法完全解释,但这很有效。我相信if语句本身就是问题。
var sId = inputData.sId;
function createSection(aPId) {
var settings = {
'method': 'POST',
'headers': {
'Authorization': 'Bearer <ACCESS TOKEN>',
'Content-Type': 'application/x-www-form-urlencoded'
},
'body': "name=Emails%3A"
};
var url = 'https://app.asana.com/api/1.0/projects/' + aPId + '/sections';
console.log('Settings:',settings);
console.log('URL:',url);
fetch(url,settings)
.then(function(res) {
var response = res;
//console.log(response);
return response.json();
})
.then(function(json) {
//console.log(json);
var sId = json['data']['id'];
callback(null,{sectionId: sId});
})
.catch(callback);
}
if(sId == 0){
var sId = createSection(input.asanaProjectId);
console.log('If test ran!');
} else {
output = [{sectionId: sId}];
}