我还在学习网络开发,因此我的业余语言,但我真的需要能够从Google工作表中提取一些数据并在Javascript动画画布对象中直观地表示。
不幸的是,像往常一样,Google表格API文档并非与我这样的人一起编写!基本的GETer应用程序在我的本地Python服务器上运行良好,但现在因为我在托管网站上测试它而引发错误。我认为这是一个JSONP问题,因为错误以'X-Frame-Options'拒绝加载'开头,但在文档中似乎没有提到如何将请求作为JSONP。我已将电子表格公开,因此不需要进行身份验证步骤。
这是代码,删除了ID等:
<script>
var CLIENT_ID = 'my_client_id';
var SCOPES = ["https://www.googleapis.com/auth/spreadsheets.readonly"];
function checkAuth() {
gapi.auth.authorize(
{
'client_id': CLIENT_ID,
'scope': SCOPES.join(' '),
'immediate': true
}, handleAuthResult);
}
/**
* Handle response from authorization server.
*
* @param {Object} authResult Authorization result.
*/
function handleAuthResult(authResult) {
if (authResult && !authResult.error) {
// Hide auth UI, then load client library.
loadSheetsApi();
} else {
// Show auth UI, allowing the user to initiate authorization by
// clicking authorize button.
console.log('nope');
}
}
/**
/**
* Load Sheets API client library.
*/
function loadSheetsApi() {
var discoveryUrl =
'https://sheets.googleapis.com/$discovery/rest?version=v4';
gapi.client.load(discoveryUrl).then(trackDonations);
}
/**
* Print values in the donations column
*/
function trackDonations() {
gapi.client.sheets.spreadsheets.values.get({
spreadsheetId: 'my_sheet_id',
range: 'Form Responses 1!C2:C',
}).then(function(response) {
var range = response.result;
if (range.values.length > 0) {
console.log(range.values);
$('.sum').text(range.values[range.values.length-1]);
} else {
prompt('No data found.');
}
}, function(response) {
prompt('Error: ' + response.result.error.message);
});
}
</script>
<script src="https://apis.google.com/js/client.js?onload=checkAuth">
也许我错过了一些愚蠢的东西,但会非常感谢一些指导!谢谢!
答案 0 :(得分:1)
如果您正在使用电子表格,则可能更容易使用AppsScript。
从电子表格中,转到工具&gt;脚本编辑器。此页面显示如何将数据加载到数组https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getDataRange(),然后将其作为jsonp https://developers.google.com/apps-script/guide/content#serving_jsonp_in_web_pages提供。如果您随后“部署为Web应用程序”(云图标),它们将为您提供引用的URL在你的代码中。
它类似于使用其余的api,但可以让您更好地控制响应的工作方式。