在Google Apps Script Web App中使用Google可视化API显示GSheet范围时出错
Error showing GSheet range using Google Visualization API in Google Apps Script Web App
我试图通过谷歌应用程序脚本Web应用程序使用谷歌表可视化API显示谷歌电子表格范围。我计划将Web应用程序部署到谷歌网站。当我将代码复制到Google Apps Script Web应用程序项目并部署Web应用程序时,查询响应是"错误请求[400]"。如何进一步调试?
替代解决方案:
- 手动:谷歌网站有一个小工具拉一个Gspreadsheet范围到一个网页,但我想做的70个不同的范围和页面编程。
- 纯谷歌应用程序脚本:我可以以编程方式创建一个网页模板的副本,其中包含表gadget和编辑表范围。当你编辑HTML内容时,有一个已知的问题会破坏gadget (google-apps-script-issues #572)。
来源Google电子表格(假公开数据)https://docs.google.com/spreadsheets/d/1miOxJ3jPCLE66mWcZmd2q-1YAu6so-GbxjcmIDtXUV4
JS小提琴代码工作。我可以查询谷歌电子表格并绘制谷歌可视化表。https://jsfiddle.net/xcghpgmt/6/
也可以用作代码片段。
function drawChart() {
var key = '1miOxJ3jPCLE66mWcZmd2q-1YAu6so-GbxjcmIDtXUV4';
var GID = 0;
var range = 'A3:h18';
var queryString = 'https://docs.google.com/spreadsheets/d/'+key+'/gviz/tq?gid='+GID+'&range='+range;
// Set Data Source
var query = new google.visualization.Query(queryString);
// Send the query with callback function
query.send(handleQueryResponse);
}
function handleQueryResponse(response) {
// Handle Query errors
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
// Draw Chart
var data = response.getDataTable();
var chart = new google.visualization.Table(document.getElementById('chart_div'));
chart.draw(data);
}
google.load('visualization', '1', {packages:['table'], callback: drawChart});
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<div id="chart_div"></div>
Code.gs
function doGet() {
var html = HtmlService.createTemplateFromFile("Index").evaluate();
html.setTitle("Dynamic Webpage");
return html;
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.getContent();
}
index . html
<!DOCTYPE html>
<html>
<header>
</header>
<body>
<div id="chart_div"></div>
</body>
<?!= include('JavaScript.html'); ?>
</html>
Javascript.html
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
function drawChart() {
var key = '1miOxJ3jPCLE66mWcZmd2q-1YAu6so-GbxjcmIDtXUV4';
var GID = 0;
var range = 'A3:h18';
var queryString = 'https://docs.google.com/spreadsheets/d/'+key+'/gviz/tq?gid='+GID+'&range='+range;
// Set Data Source
var query = new google.visualization.Query(queryString);
// Send the query with callback function
query.send(handleQueryResponse);
}
function handleQueryResponse(response) {
// Handle Query errors
if (response.isError()) {
alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
return;
}
// Draw Chart
var data = response.getDataTable();
var chart = new google.visualization.Table(document.getElementById('chart_div'));
chart.draw(data);
}
google.load('visualization', '1', {packages:['table'], callback: drawChart});
</script>
您还没有正确设置应用程序的沙箱,因此caja清理正在剥离jsapi。
改变:
function doGet() {
var html = HtmlService.createTemplateFromFile("Index").evaluate();
html.setTitle("Dynamic Webpage");
return html;
}
:
function doGet() {
var html = HtmlService.createTemplateFromFile("Index").evaluate();
html.setTitle("Dynamic Webpage").setSandboxMode(HtmlService.SandboxMode.IFRAME);
return html;
}
您可以从include()
函数中完全删除沙箱语句,因为它是您需要沙箱的应用程序。最好删除include()
并在Index.html中使用它:
<?!= HtmlService.createHtmlOutputFromFile('JavaScript').getContent(); ?>
相关文章:
- 在angularjs/google地图中显示分支最近的路线
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- 来自单个Google Sheet的多个图表赢得't显示
- 在一个C#页面上显示多个Google图表
- Google Places API显示雷达搜索中的位置图标/图像
- 没有显示带有Infobox PHP/SQL的Google Map API v3
- 使用Google地图API v3显示多个标记
- Google 地图信息窗口仅显示首次点击时的信息
- 仅显示 Google 表格中来自 api 调用的最新数据行
- 我应该在Google Api javascript中进行什么更改,以便它只能显示印度城市,而不能落后于州和印度
- 使用JavaScript获取Google地图上显示的所有推文时遇到麻烦
- Google Analytics(分析)多跟踪帐号维度数据部分未显示在报告中
- 使用完整日历在网站上获取并显示来自Google日历事件的附加图像
- Google Maps Javascript API v3 地图显示在桌面浏览器上,但不会显示在移动浏览器上
- 将PHP集成到Javascript中,使用Google API显示地图标记
- Google Plus图标未显示-“X-Frame-Options禁止显示”
- Google Drive SDK示例python DrEdit不工作(身份验证时闪烁,编辑器未显示)
- 如何显示带有Google Packaged应用程序或扩展程序的托盘图标
- 在Google Maps API V3中只显示一个InfoBubble
- Google Fusion API和显示所有数据的问题