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
Json 使用谷歌应用程序脚本查询谷歌工作表_Json_Google Apps Script_Google Sheets_Google Visualization_Urlfetch - Fatal编程技术网

Json 使用谷歌应用程序脚本查询谷歌工作表

Json 使用谷歌应用程序脚本查询谷歌工作表,json,google-apps-script,google-sheets,google-visualization,urlfetch,Json,Google Apps Script,Google Sheets,Google Visualization,Urlfetch,我已经构建了一个web应用程序,用于跟踪组织内部的车辆使用情况。其中一个功能是,该应用程序查看现有的数据库(谷歌表单),以检查起始里程是否与最后一个结束里程匹配。我使用JavaScript中的Gviz和查询来实现这一点 不幸的是,这是在客户端完成的。因为精明的用户有可能查看源代码并访问Google工作表,所以我想将其转移到服务器端(在Google脚本中)。这样,当查询结果从Google脚本传递到客户端时,他们将只看到查询结果。下面的示例不是从我的Web应用程序中获取的,它是我正在使用的从Goog

我已经构建了一个web应用程序,用于跟踪组织内部的车辆使用情况。其中一个功能是,该应用程序查看现有的数据库(谷歌表单),以检查起始里程是否与最后一个结束里程匹配。我使用JavaScript中的Gviz和查询来实现这一点

不幸的是,这是在客户端完成的。因为精明的用户有可能查看源代码并访问Google工作表,所以我想将其转移到服务器端(在Google脚本中)。这样,当查询结果从Google脚本传递到客户端时,他们将只看到查询结果。下面的示例不是从我的Web应用程序中获取的,它是我正在使用的从Google脚本查询Google工作表。。。我知道如何将值从GS传递到客户端,所以我的主要问题是如何从Google脚本查询Google工作表

function myFunction() {

    //Google Sheet  
  var sourceSheetString = 'https://docs.google.com/spreadsheets/d/116J**SheetID**w844/gviz/tq?sheet=Sheet1&headers=1&tq=';
  var query = 'select A,B where B = "Brown" order by A desc';
  var queryString = sourceSheetString + query;
 
  var response = UrlFetchApp.fetch(queryString);
  
  var parsedResponse = JSON.parse(response.getContentText());
  
  Logger.log(parsedResponse);
  
}
不幸的是,我的谷歌应用程序域不允许在域外共享,因此我将无法共享文件等

我已经在互联网上搜索了一个解决方案,但我能找到的最接近我们的应用程序。这是我在运行函数时遇到的错误:

SyntaxError:意外标记:<(第10行(var parsedResponse),文件“Code”)

当我将完整的url字符串粘贴到浏览器窗口时,它工作正常,因此我知道查询字符串本身没有问题



@SandyGood当我记录回复时,我得到了以下信息:
googlesheets-免费在线创建和编辑电子表格。一堆CSS…

正如@SandyGood提到的,这个错误很可能是JSON解析错误。查看
var response=UrlFetchApp.fetch(queryString)中的原始响应

我猜它会包括这样的东西

/*O\u O*/
google.visualization.Query.setResponse(

后跟json数据,然后是尾随的

首先删除响应中那些无关的部分,然后解析JSON。因此:

var response = UrlFetchApp.fetch(queryString);
var cleanedResponse = yourCleanFunction(response.getContentText());
var parsedResponse = JSON.parse(cleanedResponse);

其中,
yourCleanFunction()
是您编写的执行必要剥离的函数。

听起来您可能正在尝试设置执行API。谷歌有一个包含多种语言模板的教程:@BMcV你是否建议我使用执行API运行一个独立的应用程序脚本项目来运行查询,然后将查询结果拉入?我不确定你的应用程序存在于何处。它是作为一个应用程序部署的吗?或者它是否存在于另一个域中?谷歌脚本在哪里?它是独立文件吗?还是在电子表格脚本编辑器中访问?来自查询的HTTP响应是否有效?如果不是,那么解析它可能会产生错误。记录响应,然后测试它是否有效<代码>Logger.log(response.getContentText())您可以对测试有效JSON的网站进行web搜索。相关问题:谢谢大家,还没有机会尝试@Sandy Good的解决方案,但我同意,可能就是这样。我会把结果报告回来…@SandyGood当我记录我得到的回复时,我得到了这样一句话:`谷歌表格-在线创建和编辑电子表格,免费。一堆CSS…`根据记录的响应,URLFetchApp的行为与我在浏览器栏中输入查询字符串并按enter键时的行为不同……我想感谢大家的帮助,我从来没能做到这一点,但我确实找到了一个解决办法,在另一个谷歌表单中构建查询,并允许访问有限的数据集。