импортировать приватную таблицу Google Fusion в таблицу Google Документов - PullRequest
0 голосов
/ 14 ноября 2011

Я хочу построить диаграмму в Google Fusion Table.Я знаю, что есть возможность сделать это с помощью таблицы Fusion, но мне нужно сделать это с помощью электронной таблицы Google.

Как импортировать частную таблицу Fusion в электронную таблицу?код выше дает мне только заголовки таблицы.

Ответы [ 3 ]

1 голос
/ 08 марта 2012

Не устанавливайте каждую ячейку отдельно, как в примере ниже, если вам не нужно обрабатывать каждый бит данных.Использование примерно в 10 раз быстрее:

var rows = o.length;
var columns = o[0].length;
cell.offset(<startrow>, <startcolumn>, rows, columns).setValues(o);
0 голосов
/ 16 ноября 2011

После глубокого исследования, наконец, я понял это после глубокого поиска и прочтения здесь . Вот как это выглядит для сценария приложения электронной таблицы кода Google:

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;
}

После этого вы можете делать все, что вы хотите в электронной таблице. Кстати, я все еще думаю, что есть простой способ автоматического импорта приватной таблицы в электронную таблицу.

0 голосов
/ 16 ноября 2011

Есть хорошая статья, описывающая, как получить доступ к таблицам Fusion из сценариев приложений:

http://googleappsdeveloper.blogspot.com/2011/09/using-fusion-tables-with-apps-script.html

Там есть ссылка на пример кода, который можно адаптировать для импорта данных таблицы Fusionв электронную таблицу.

...