【问题标题】:import private google fusion table to google docs spreadsheet将私有谷歌融合表导入谷歌文档电子表格
【发布时间】:2011-11-14 18:38:01
【问题描述】:

我想为谷歌融合表构建一个图表。我知道有一个选项可以用 fusion table 来做,但我需要用 google 电子表格来做。

如何将私有融合表导入电子表格?

function getdata(authToken) {
      query = encodeURIComponent("SELECT * FROM tableid");
      var URL = "http://www.google.com/fusiontables/api/query?sql=" + query;
      var response = UrlFetchApp.fetch(URL, {
         method: "get",
         headers: {
              "Authorization": "GoogleLogin auth=" + authToken,
         }
      });
      return response.getContentText();
}

上面的代码只给了我表格标题。

【问题讨论】:

    标签: urlfetch google-spreadsheet-api google-fusion-tables


    【解决方案1】:

    除非您需要处理每一位数据,否则不要像下面的示例那样单独设置每个单元格。使用它的速度大约快 10 倍:

    var rows = o.length;
    var columns = o[0].length;
    cell.offset(<startrow>, <startcolumn>, rows, columns).setValues(o);
    

    【讨论】:

      【解决方案2】:

      经过深入研究,经过深入搜索和阅读here,我终于弄明白了。 这是它查找代码 google docs 电子表格应用程序脚本的方式:

      function onOpen()
      {
        var tableID = '00000' // Add the table ID of the fusion table here
        var email = UserProperties.getProperty('email');
        var password = UserProperties.getProperty('password');
      
        if (email === null || password === null) {
          email = Browser.inputBox('Enter email');
          password = Browser.inputBox('Enter password');
          UserProperties.setProperty('email',email);
          UserProperties.setProperty('password', password);
        } else {
          email = UserProperties.getProperty('email');
          password = UserProperties.getProperty('password');
        }
      
        var authToken = getGAauthenticationToken(email,password);
        query = encodeURIComponent("SELECT * FROM tableID");
        var URL = "http://www.google.com/fusiontables/api/query?sql=" + query;
      
        var response = UrlFetchApp.fetch(URL, {
           method: "get",
           headers: {
                "Authorization": "GoogleLogin auth=" + authToken,
           }
        });
        var tableData = response.getContentText();
        var o  = Utilities.parseCsv(response.getContentText());
        var doc = SpreadsheetApp.getActiveSpreadsheet();
        var cell = doc.getRange('a1');
        var index = 0;
        for (var i in o) {
          var row = o[i];
          var col = 0;
          for (var j in row) {
            cell.offset(index, col).setValue(row[j]);
            col++;
          }
          index++;
        }
      }
      
      function getGAauthenticationToken(email, password) {
        password = encodeURIComponent(password);
        var response = UrlFetchApp.fetch("https://www.google.com/accounts/ClientLogin", {
            method: "post",
            payload: "accountType=GOOGLE&Email=" + email + "&Passwd=" + password + "&service=fusiontables&Source=testing"
        });
        var responseStr = response.getContentText();
        responseStr = responseStr.slice(responseStr.search("Auth=") + 5, responseStr.length);
        responseStr = responseStr.replace(/\n/g, "");
        return responseStr;
      }
      

      之后,您可以在电子表格中做任何您想做的事情。 顺便说一句,我仍然认为有一种简单的方法可以将私有表自动导入电子表格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 2014-07-01
        • 2011-03-31
        相关资源
        最近更新 更多