我遇到的问题是我在更新融合表的电子表格中运行的代码。我运行以下代码(隐私时省略了融合表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行)
我理解编码但不太了解服务器和程序彼此交互的方式,我的方程组网站的代码已经传递给我,这有点过头了,我不知道该怎么做。
非常感谢任何帮助!
答案 0 :(得分:0)
我一直在使用这个类似脚本的version。通过Google Fusion Tables小组将John McGrath整合在一起,在Google电子表格和Google Fusion Table之间创建手动“同步”。
我猜它们很相似,但也许你错过了一些方面?
我已根据我的需要修改了一些脚本,并添加了API key和new 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......';