Google apps script 使用我的个人clickup令牌从Google Apps脚本进行clickup api调用

Google apps script 使用我的个人clickup令牌从Google Apps脚本进行clickup api调用,google-apps-script,get,urlfetch,Google Apps Script,Get,Urlfetch,此URLFACHAPP调用返回{ECODE=OAUTH_017,err=Authorization header required},即使我在请求中包含我的个人clickup令牌。我错过什么了吗?任何帮助都将不胜感激。在对本主题进行研究时,我偶然发现了一些代码。对于不同的事情,有两种不同的方法,我推荐第一种,JavaScript(因为它与您当前所做的最接近)。在一篇评论中,你说这是为了编辑任务,所以这就是这段代码的目的 javascript var-request=new-XMLHttpRequ

此URLFACHAPP调用返回{ECODE=OAUTH_017,err=Authorization header required},即使我在请求中包含我的个人clickup令牌。我错过什么了吗?任何帮助都将不胜感激。

在对本主题进行研究时,我偶然发现了一些代码。对于不同的事情,有两种不同的方法,我推荐第一种,JavaScript(因为它与您当前所做的最接近)。在一篇评论中,你说这是为了编辑任务,所以这就是这段代码的目的

javascript

var-request=new-XMLHttpRequest();
请求打开('PUT','https://api.clickup.com/api/v1/task/{task_id}');
setRequestHeader('Content-Type','application/json');
setRequestHeader('Authorization','access_token');
request.onreadystatechange=函数(){
if(this.readyState==4){
console.log('Status:',this.Status);
log('Headers:',this.getAllResponseHeaders());
log('Body:',this.responseText);
}
};
变量体={
“名称”:“新任务名称”,
“内容”:“新任务内容”,
“受让人”:{
“添加”:[
1.
],
“rem”:[
2.
]
},
“状态”:“已关闭”,
"优先":3,,
“到期日”:1508369194377
};
send(JSON.stringify(body));
卷曲

node.js

var request=require('request');
请求({
方法:'放',
网址:'https://api.clickup.com/api/v1/task/{task_id}',
标题:{
“内容类型”:“应用程序/json”,
“授权”:“访问令牌”
},
正文:“{\'name\”:“New Task name\”,“content\”:“New Task content\”,“assignees\”:{\'add\”:[1],“rem\”:[2],“status\”:“Closed\”,“priority\”:3,“到期日”:“1508369194377\”
},函数(错误、响应、正文){
console.log('Status:',response.statusCode);
log('Headers:',JSON.stringify(response.Headers));
log('Response:',body);
});

这是为了生产,如果您需要
模拟服务器
调试代理

请告诉我。您的请求似乎格式不正确(请务必查看该方法的参考文档)。
授权
标题应位于显式
标题
对象中。另外,您不需要将method设置为
GET
,因为它是默认值

当您发出
POST
请求时,还需要记住其他一些东西-谷歌应用程序脚本有一个有趣的怪癖,您必须使用
contentType
属性定义
Content-Type
标题。如果您尝试在
标题
对象中设置该标题,则默认情况下(
应用程序/x-www-form-urlencoded
我相信)将覆盖If对象

下面是如何设置
GET
请求的:

函数getClickupTeam(){
让response=UrlFetchApp.fetch(点击URL+“团队”{
“muteHttpExceptions”:true,
“标题”:{
“授权”:单击Uptoken
}
}
log(response.getContentText());
让json=json.parse(response.getContentText());
log(json);
);
对于带有JSON负载的
POST
请求,您可以执行以下操作:

函数getClickupTeam(){
让response=UrlFetchApp.fetch(点击URL+“团队”{
“方法”:“发布”,
“contentType”:“application/json”,
“muteHttpExceptions”:true,
“标题”:{
“授权”:单击Uptoken
},
“有效负载”:JSON.stringify({
“键”:“值”
});
}
log(response.getContentText());
让json=json.parse(response.getContentText());
log(json);
);

您是否验证了您的令牌凭据是否正确?也可以检查是的,我不确定是否应该在我的个人令牌中包含另一个标记为令牌的标头,或者它是否应该是“授权”字段中记录的值。但它是正确的。我会尝试这样做,因为它指定了“标头”在错误消息中,这不起作用。我不确定所需的确切语法,但我在clickup api文档中找不到任何内容,并且一些变体都给出了相同的错误代码。我在网上也找到了这一错误代码,但这对我没有帮助,因为XMLHttpRequest在GAS上不可用。这也适用于他们的v1 api,该api已被弃用……天哪,我必须说我不知道还有什么可以尝试的。你确定方法是get not post吗?get和post的错误代码相同。你尝试过Curl吗?非常感谢你的帮助。这解决了问题
function getClickupTeam() {
  let response = UrlFetchApp.fetch(clickupUrl + "team", {
    "method": "GET",
    "Authorization": clickupToken,
    "muteHttpExceptions": true
  })
  Logger.log(response)
  let json = JSON.parse(response);
  Logger.log(json);
}
curl --include \
     --request PUT \
     --header "Content-Type: application/json" \
     --header "Authorization: "access_token"" \
     --data-binary "{
    \"name\": \"New Task Name\",
    \"content\": \"New Task Content\",
    \"assignees\": {
        \"add\" : [
            1
        ],
        \"rem\" : [
            2
        ]
    },
    \"status\": \"Closed\",
    \"priority\": 3,
    \"due_date\": \"1508369194377\"
}" \
'https://api.clickup.com/api/v1/task/{task_id}'