問題描述
通過 JavaScript 客戶端 API Auth 使用 Google 電子表格作為“已驗證”數據源的 Google 可視化 API (Google Visualization API using Google Spreadsheet as "Authenticated" Data Source via JavaScript Client API Auth)
The Google Visualization API documentation states the easiest way to use a Google Spreadsheet as a Data Source is to publish it. And under normal circumstances that works great. But I am dynamically creating the Google Spreadsheet using the Drive API. So, even when I am authorized, then create a spreadsheet, I cannot immediately use that spreadsheed as a data source. So I need one of two solutions:
1) Programatically "Publish" the Google Spreadsheet via the Drive API?
2) Authenticate the Query to the Google Visualization API?
The code looks like this:
var url = 'https://spreadsheets.google.com/tq?key=' + idOfSpreadsheet + '&headers=1&pub=1';
var query = new google.visualization.Query(url);
query.send(drawTable);
You would think I could append the auth token to the url varible, but I can't find any documentation on that. This would be my first choice.
Otherwise, I could publish the spreadsheet but I can't find how to do that from JavaScript. Currently, I have to open the newly created spreadsheet in the Google Drive UI and manually publish it. I step I would not like to have to explain to users how to accomplish with each dynamically created spreadsheet.
Cheers James
參考解法
方法 1:
As you mentioned you could try to append the oauth 2 access token to the url.
After creating your google spreadsheet, you can query its metadata by doing an authorized:
GET https://www.googleapis.com/drive/v2/files/<file_key>
See documentation.
In the ile's metadata you will get the list of possible export formats:
...
"exportLinks": {
"application/pdf": "https://docs.google.com/...&exportFormat=pdf",
"application/x-vnd.oasis.opendocument.spreadsheet": "https://docs.google.com/...exportFormat=ods",
"application/vnd.ms-excel": "https://docs.google.com/...&exportFormat=xls"
},
...
CSV is not listed because it will only allow you to download the first sheet but it is supported so you could use the following URL:
https://docs.google.com/feeds/download/spreadsheets/Export?key=<file_key>&exportFormat=csv
You have to do an authorized request though so you wil need to append your auth token like this:
https://docs.google.com/feeds/download/spreadsheets/Export?key=<file_key>&exportFormat=csv&access_token=<auth_token>
Be aware that the OAuth 2.0 access tokens are only valid for 1h so you need to refresh them eventually.
(by user1541413、Nicolas Garnier)