Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript 在Google Apps脚本Web App中使用Google Visualization API显示GSheet范围时出错_Javascript_Google Apps Script_Google Visualization_Google Sites - Fatal编程技术网

Javascript 在Google Apps脚本Web App中使用Google Visualization API显示GSheet范围时出错

Javascript 在Google Apps脚本Web App中使用Google Visualization API显示GSheet范围时出错,javascript,google-apps-script,google-visualization,google-sites,Javascript,Google Apps Script,Google Visualization,Google Sites,我正试图通过GoogleApps脚本Web App使用GoogleTableVisualization API显示一个GoogleSpreadsheet范围。我计划将这个Web应用程序部署到一个Google网站上。当我将代码复制到Google Apps脚本Web应用程序项目并部署Web应用程序时,查询响应为“错误请求[400]”。如何进一步调试 替代解决方案: 手动操作:Google站点有一个小工具可以将一个Gspreadsheet范围拉到网页上,但我想用编程的方式为70个不同的范围和页面做这

我正试图通过GoogleApps脚本Web App使用GoogleTableVisualization API显示一个GoogleSpreadsheet范围。我计划将这个Web应用程序部署到一个Google网站上。当我将代码复制到Google Apps脚本Web应用程序项目并部署Web应用程序时,查询响应为“错误请求[400]”。如何进一步调试

替代解决方案:

  • 手动操作:Google站点有一个小工具可以将一个Gspreadsheet范围拉到网页上,但我想用编程的方式为70个不同的范围和页面做这件事
  • 纯谷歌应用程序脚本:我可以通过编程创建包含表格小工具的网页模板副本,并编辑表格范围。在编辑HTML内容时,有一个已知的问题会破坏小工具(google apps脚本问题#572)
源谷歌电子表格(伪造公共数据)

jsfiddle代码可以工作。我可以查询谷歌电子表格并绘制谷歌可视化表格。

也可用作代码段。
函数绘图图(){
变量键='1miOxJ3jPCLE66mWcZmd2q-1YAu6so-GbxjcmIDtXUV4';
var-GID=0;
风险值范围='A3:h18';
变量queryString=https://docs.google.com/spreadsheets/d/“+key+”/gviz/tq?gid='+gid+'&range='+range;
//设置数据源
var query=newgoogle.visualization.query(queryString);
//使用回调函数发送查询
发送(handleQueryResponse);
}
函数handleQueryResponse(响应){
//处理查询错误
if(response.isError()){
警报('查询中的错误:'+response.getMessage()+'+response.getDetailedMessage());
返回;
}
//绘制图表
var data=response.getDataTable();
var chart=new google.visualization.Table(document.getElementById('chart_div'));
图表绘制(数据);
}
load('visualization','1',{packages:['table'],callback:drawChart})

您没有为应用程序正确设置沙箱,因此caja清理正在剥离jsapi

更改:

函数doGet(){
var html=HtmlService.createTemplateFromFile(“Index”).evaluate();
html.setTitle(“动态网页”);
返回html;
}
致:

函数doGet(){
var html=HtmlService.createTemplateFromFile(“Index”).evaluate();
setTitle(“动态网页”).setSandboxMode(HtmlService.SandboxMode.IFRAME);
返回html;
}
您可以从
include()
函数中完全删除沙箱语句,因为它是您需要沙箱处理的应用程序。最好删除
include()
,并在Index.html中使用它: