【问题标题】:Trello doesn't move cards between lists using Google App ScriptTrello 不会使用 Google App Script 在列表之间移动卡片
【发布时间】:2017-09-22 14:33:04
【问题描述】:

我想我已经尝试了这里所有的解决方案,但没有一个对我有用。

问题是我无法使用 trello api 在列表之间移动卡片。我已经尝试过这种方法:
1号:

var API_KEY = '********************************';
var TOKEN = '************************************************************';
var ID_LIST = '***************************';

  var payload = {
    "value": ID_LIST,
    "token": TOKEN,
    "key": API_KEY
  };
  var options = {
    "method": "PUT",
    "payload": payload
  };
  // Post the payload to Trello
  try {
    var response = UrlFetchApp.fetch('http://api.trello.com/1/cards/[id of my card]/idList', options);
    Logger.log(response);
  } catch (e) {
    // Log any errors 
    Logger.log("ERROR:\n"+e.message);
  }

2号:

function createOAthService_Trello() {

  var consumerKey='*************************';
  var consumerSecret = '********************************************************'

  var service = OAuth1.createService("trello");
  service.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken");
  service.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken");
  service.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken?scope=read,write");
  service.setPropertyStore(PropertiesService.getScriptProperties());

  service.setCallbackFunction('authCallback_Trello');

  service.setConsumerKey(consumerKey);
  service.setConsumerSecret(consumerSecret);

  return service;
}



function checkServiceAccess(){
      var service = createOAthService_Trello();
      var emailAddress ='*****@********.com';

      if(service.hasAccess()){
        return service;
    }
    else {
      var authorizationUrl = service.authorize();
      MailApp.sendEmail(emailAddress, 'Google Script App Needs Authorization (Trello)', 'Please visit the following URL and then re-run the script: ' + authorizationUrl);
      Logger.log('Please visit the following URL and then re-run the script: ' + authorizationUrl);
  }
}
function moveCard(){
      var service = checkServiceAccess();
      var url = 'http://api.trello.com/1/cards/[myCardId]/idList?value=[newListId]&token=[myToken]&cards=open&lists=open'
      var options = {"method" : "put"};

      var raw= service.fetch(url, options);
      Logger.log(raw);
}

这两段代码不会崩溃。但它们不会移动任何卡片,只会返回一个带有放置它们的列表 ID 的 Log。
我已经检查了一千次以确保 id 是正确的,所以这不是问题。 PUT 请求似乎没有问题,因为我可以更新描述、标题……但是对于 DELETE 请求,它会触发“意外异常”。也许他们是相关的。

另外,我试图在我的代码中插入这个:

<html>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="https://trello.com/1/client.js?key=*****************************"></script>
</html>

//eval(UrlFetchApp.fetch('https://trello.com/1/client.js?key=************************').getContentText());

var success = function(successMsg) {
  asyncOutput(successMsg);
};

var error = function(errorMsg) {
  asyncOutput(errorMsg);
};

Logger.log(Trello.get('/member/me/boards', success, error));

但它崩溃了,因为它找不到 Trello 全局变量。 我真的很绝望,任何帮助将不胜感激。 感谢您的时间! :)

【问题讨论】:

  • 如果其他 trello 调用都能成功,很可能是你的 api 使用有误。最后一次尝试无法工作,因为 trello 库是供前端使用的,而不是后端使用的。
  • 我认为可能是这样,所以我在 Trello 的沙箱中进行了尝试,并且成功了。但他们使用全局 Trello 对象...
  • 您可以尝试使用chrome调试器在控制台中使用JavaScript进行api调用。

标签: javascript google-apps-script trello


【解决方案1】:

Trello 的某个人帮助我解决了这个问题。因此,如果您遇到同样的问题,只需将 Url 更改为:

http://api.trello.com/1/cards/[myCardId]/idList?value=[newListId]&token=[myToken]&cards=open&lists=open

到:

https://api.trello.com/1/cards/[myCardId]/idList?value=[newListId]&token=[myToken]&cards=open&lists=open

似乎 Trello 将在 http:// 上进行的所有放置和发布都视为 GET。改用 https:// 解决问题。

【讨论】:

  • 这真的救了我!
猜你喜欢
  • 2021-11-30
  • 2015-03-08
  • 2015-09-30
  • 2014-01-05
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 2013-12-07
  • 2015-03-23
相关资源
最近更新 更多