![](/img/trans.png)
[英]Trello API: How to POST a Card from Google Apps Script (GAS)
[英]How to authorize and post/update Trello card from a Google docs script
我有一个Google文档电子表格,我想用来更新Trello中的参考卡片。 我在使用oauth并通过其HTTP API提取数据方面取得了一些成功,但是遇到了以下问题:
1)似乎Trello的code.js需要一个window对象,而Google Doc脚本没有提供。 因此,我坚持使用他们的HTTP API。
2)通过OAuth进行身份验证有效,但仅授予我读取访问权限。 我无法使用能够获得的令牌更新卡。
function test() {
var oauthConfig = UrlFetchApp.addOAuthService("trello");
oauthConfig.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken");
oauthConfig.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken");
oauthConfig.setAuthorizationUrl("https://trello.com/1/authorize?key=" + consumerKey + "&name=trello&expiration=never&response_type=token&scope=read,write");
//oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken"); <-- this only gives read access. Cannot POST
oauthConfig.setConsumerKey(consumerKey);
oauthConfig.setConsumerSecret(consumerSecret);
var url = 'https://trello.com/1/cards/yOqEgvzb/actions/comments&text=Testing...';
var postOptions = {"method" : "post",
"oAuthServiceName": "trello",
"oAuthUseToken": "always"};
var response = UrlFetchApp.fetch(url, postOptions); // "Request failed for returned code 404. Truncated server response: Cannot POST"
Logger.log(response.getContentText());
}
我发现了许多相关问题,但没有直接答案:
Trello API:如何从Google Apps脚本(GAS)发布卡
Google Apps脚本OAuth Connect不适用于trello
非常感谢您的任何建议。
为了获得写访问权,您需要更改授权URL。 这个例子对我有用
var oauthConfig = UrlFetchApp.addOAuthService("trello");
oauthConfig.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken");
oauthConfig.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken");
oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken?scope=read,write");
关于1)是的,您不能使用服务器气体提供的库,它只能从浏览器运行。 在2)上,我已经通过GAS做到了这一点,并且没有问题。 您需要使用以下格式: https : //api.trello.com/1/.../xxxx ? key = yyyyyy&token = zzzzzzz& ...
并且当您获得令牌时,您需要请求永久访问(没有到期)并进行写访问,例如: https : //trello.com/1/authorize? key = “ + key +”&name = xxxxxxx&expiration = never&response_type = token&scope =读,写”
如:
function postNewCardCommentWorker(cardId, comment, key, token) {
var commentEncoded=encodeURIComponent(comment);
var url = "https://api.trello.com/1/cards/"+cardId+"/actions/comments?text="+commentEncoded+"&key="+key+"&token="+token;
var options =
{
"method" : "POST"
};
UrlFetchApp.fetch(url, options);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.