Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 验证以使用Google Apps脚本查询融合表_Google Apps Script_Google Fusion Tables - Fatal编程技术网

Google apps script 验证以使用Google Apps脚本查询融合表

Google apps script 验证以使用Google Apps脚本查询融合表,google-apps-script,google-fusion-tables,Google Apps Script,Google Fusion Tables,我是Google应用程序域的成员,我试图使用代码示例查询融合表,但不断出现以下错误: { "error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ]

我是Google应用程序域的成员,我试图使用代码示例查询融合表,但不断出现以下错误:

{
  "error": {
    "errors": [
      {
      "domain": "global",
      "reason": "required",
      "message": "Login Required",
      "locationType": "header",
      "location": "Authorization"
      }
    ],
    "code": 401,
    "message": "Login Required"
  }
}
以下是我正在使用的代码:

function myFunction() {

//Fusion Table
  var constructor = 'https://www.googleapis.com/fusiontables/v2/query?sql=';
  var fusionTableID = '1pJk********UY5l';
  var fusionTableAPIKey = 'AIza********AGV8';  //  Browser API Key
  var fusionTableQuery = 'SELECT * FROM ' + fusionTableID + '&key=' + fusionTableAPIKey;  
  var queryString = constructor + fusionTableQuery;

  var response = UrlFetchApp.fetch(queryString);

  var parsedResponse = JSON.parse(response.getContentText());

  Logger.log(parsedResponse);

}
不幸的是,由于域设置,我无法与域外的人共享任何文件。我已经审阅了参考资料,但我不确定如何使其适应我正在做的事情

我可以使用Google提供的示例字符串使脚本正常工作,因此我相信代码是正确的:

https://www.googleapis.com/fusiontables/v2/query?sql=SELECT * FROM%201KxVV0wQXhxhMScSDuqr-0Ebf0YEt4m4xzVplKd4&key=AIzaSyAm9yWCV7JPCTHCJut8whOjARd7pwROFDQ

先谢谢你

您需要使用访问令牌或登录身份验证在请求中传递授权标头。它显示在您发布的页面中

无论如何,只使用Fusion Table advanced服务要容易得多。要启用它,请转到资源>高级谷歌服务>融合表API

如果您仍要手动执行呼叫。至少启用该服务并添加一些伪代码,以便应用程序脚本可以为您请求oAuth2作用域。e、 g

函数noNeedToRun()//仅用于触发作用域
FusionTables.Query.sql('foo')//虽然这比手动获取更容易
}
函数myFunction(){
//…相同的代码
var queryString=constructor+fusionTableQuery;
var response=UrlFetchApp.fetch(queryString{
标题:{//这是您缺少的内容
“授权”:“承载者”+ScriptApp.getOAuthToken(),
}
});
var parsedResponse=JSON.parse(response.getContentText());
Logger.log(parsedResponse);
}

谢谢,效果很好!我知道应用程序脚本应该处理oAuth,但无法启动屏幕。现在有道理了。。。期待探索FusionTables.Query.sql。现在这只是一个桥梁,我真正的问题是从谷歌脚本查询谷歌工作表服务器端。。。