【问题标题】:Google Script to import Trello data to Google Sheets将 Trello 数据导入 Google 表格的 Google 脚本
【发布时间】:2016-06-23 01:45:54
【问题描述】:

我正在使用 Google 脚本将有关 Trello 卡片的信息提取到 Google 表格中。它对我来说工作得很好,但是今天突然间所有的卡片都在为每条数据拉入“未定义”。但我不知道为什么这突然停止工作。

谷歌脚本如下:

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [ {name: "Update from Trello", functionName: "main"}];
  ss.addMenu("Trello", menuEntries);
}

// trello variables
var api_key = "XXXXX";
var api_token = "XXXXX";
var board_id = "XXXXX";
var url = "https://api.trello.com/1/";


var key_and_token = "key=" + api_key + "&token=" + api_token;


//called by google docs apps
function main() {
  var ss = SpreadsheetApp.getActiveSheet().clear();
  ss.appendRow(["Date", "Task", "Who", "List", "Link"]);
  var response = UrlFetchApp.fetch(url + "boards/" + board_id + "/lists/all/?" + key_and_token);
  var lists = JSON.parse((response.getContentText()));
  Logger.log(lists);

  for (var i = 0; i < lists.length; i++) {
    var list = lists[i];

    var response = UrlFetchApp.fetch(url + "list/" + list.id + "/cards/all?" + key_and_token);
    var cards = JSON.parse(response.getContentText());
    if (!cards)
      continue;

    for (var j = 0; j < cards.length; j++) {
      var card = cards[j];
      Logger.log(cards);
      var response = UrlFetchApp.fetch(url + "cards/" + card.id + "/actions/?" + key_and_token);
      var carddetails = JSON.parse(response.getContentText());
      if (!carddetails)
        continue;
      Logger.log(carddetails);

      for (var k = 0; k < carddetails.length; k++) {        
        var dato = carddetails[k].date;
        var fullname = carddetails[k].memberCreator.fullName;
        var name = card.name;
        var link = card.url;
        var listname = list.name;

        Logger.log(name);
        Logger.log(dato);
        Logger.log(fullname);
        Logger.log(link);
        Logger.log(listname);
      }
      ss.appendRow([dato, name, fullname, listname, link]);     
    }                                       
  }
}

【问题讨论】:

    标签: google-apps-script trello


    【解决方案1】:

    在该问题之后一年,我正在搜索此代码,然后我意识到 Trello Api 在创建此代码时不会以相同的方式响应。所以我修复它...
    这是对我有用的代码

    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var menuEntries = [ {name: "Update from Trello", functionName: "main"},];
      ss.addMenu("Trello", menuEntries);
    
    }
    
    // trello variables
    var api_key = "XXXXX";
    var api_token = "XXXXX";
    var board_id = "XXXXX";
    var url = "https://api.trello.com/1/";
    
    
    var key_and_token = "key="+api_key+"&token="+api_token;
    
    
    //called by google docs apps
    function main() {
      var ss = SpreadsheetApp.getActiveSheet().clear();
      ss.appendRow(["Date", "Task", "Who", "List", "Link"]);
      var response = UrlFetchApp.fetch(url + "boards/" + board_id + "/lists?cards=all&" + key_and_token);
      var lists = JSON.parse((response.getContentText()));
      Logger.log(lists);
    
      for (var i=0; i < lists.length; i++) {
        var list = lists[i];
        //if(!list.closed) continue; //ignore open
        //Logger.log(list);
    
          var response = UrlFetchApp.fetch(url + "list/" + list.id + "/cards?" + key_and_token);
          var cards = JSON.parse(response.getContentText());
          if(!cards) continue;
    
    
    
        for (var j=0; j < cards.length; j++) {
          var card = cards[j];
          Logger.log(url + "cards/" + card.id + "/actions?" + key_and_token);
          var response = UrlFetchApp.fetch(url + "cards/" + card.id + "/?actions=all&" + key_and_token);
          var carddetails = JSON.parse(response.getContentText()).actions;
          if(!carddetails) continue;
          Logger.log(carddetails);
    
        for (var k=0; k < carddetails.length; k++) {
    
          var dato = carddetails[k].date;
          var fullname = carddetails[k].memberCreator.fullName;
          var name = card.name;
          var link = card.url;
          var listname = list.name;
    
          //var labelname = carddetails[k].labeldetails.name;
    
          Logger.log(name);
          Logger.log(dato);
          Logger.log(fullname);
          Logger.log(link);
          //Logger.log(labelname);
          Logger.log(listname);
        }
          ss.appendRow([dato, name, fullname, listname, link]);
    
       }                                      
      }
    }
    

    【讨论】:

    • 太棒了!我一直在寻找获取其他卡片详细信息的方法,例如到期日、标签等。谢谢!
    猜你喜欢
    • 2023-03-24
    • 2018-08-10
    • 2011-02-09
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-01-01
    • 2020-09-17
    • 2021-03-11
    相关资源
    最近更新 更多