使用Google电子表格更新Fusion表

时间:2013-01-14 03:02:37

标签: javascript google-fusion-tables

我遇到的问题是我在更新融合表的电子表格中运行的代码。我运行以下代码(隐私时省略了融合表ID)。

 function updateFusion() {

    var tableIDFusion = '##############################'
    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); 'email'
        UserProperties.setProperty('password', password); 
      }
      var authToken = getGAauthenticationToken(email,password); 
      deleteData(authToken, tableIDFusion); 
      updateData(authToken, tableIDFusion); 
      SpreadsheetApp.getActiveSpreadsheet().toast(Logger.getLog(), "Fusion Tables Update", 10) 
    }

    //Google Authentication API this is taken directly from the google fusion api website
    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;
    }

我继续得到错误: 请求https://www.google.com/accounts/ClientLogin返回代码403失败。服务器响应:错误= BadAuthentication(第97行)

我理解编码但不太了解服务器和程序彼此交互的方式,我的方程组网站的代码已经传递给我,这有点过头了,我不知道该怎么做。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我一直在使用这个类似脚本的version。通过Google Fusion Tables小组将John McGrath整合在一起,在Google电子表格和Google Fusion Table之间创建手动“同步”。

我猜它们很相似,但也许你错过了一些方面?

我已根据我的需要修改了一些脚本,并添加了API keynew Fusion Tables API endpoint的使用,因为原始版本使用了SQL API端点,正在逐步淘汰。

要使用,只需将Fusion Table的加密表ID添加到脚本顶部...

// Add the encrypted table ID of the fusion table here
var tableIDFusion = '17xnxY......';

然后添加api key ...

// key needed for fusion tables api
var fusionTablesAPIKey = '17xnxY......';