Google 工作表 API:如何 "publish to web" 嵌入 sheet?
Google Sheets API: How to "publish to web" for embeddable sheet?
如果我想发布一个 Google Sheets spreadsheet 以便我可以将它嵌入到 iframe 中的页面上,我将手动执行以下操作:
- 导航到 Google 驱动器
- 打开价差sheet
- 文件 > 发布到 Web > 嵌入 > 将生成的 iframe link 复制到 html 文件中
如何在前端使用 JavaScript 通过 Google Sheets API 以编程方式实现上述目标?我在我的应用程序中即时生成传播sheets,并希望在创建后立即将它们嵌入到页面中。
创建 sheet 后,我可以动态创建具有必要属性(sheet 的 ID 等)的 iframe 元素。这会引发错误。从这个 question 看来,sheet 需要具有 published: true
属性或其他东西,但这需要使用驱动器 API - 我试图避免这种情况。是否可以通过工作表 API?
仅处理
正如您得出的结论,今天无法通过表格 API,只能通过驱动器 API(使用 PATCH https://www.googleapis.com/drive/v3/files/fileId/revisions/revisionId
请求,记录在 https://developers.google.com/drive/v3/reference/revisions/update).
在搜索整个表格 API、谷歌搜索和一般的自我反省之后,我别无选择,只能包括驱动器 API 并用它来完成我的命令。这是我想出的解决方案。希望这对其他人有帮助!
将 Google 中的此脚本用于 index.html
文件中的客户端 JS 库:
<body>
...
<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
</body>
然后是 JS 的东西:
// Cache the api's into variables.
var sheets = gapi.client.sheets;
var drive = gapi.client.drive;
// 1. CREATE NEW SPREADSHEET
sheets.spreadsheets.create({
properties: {
title: 'new-sheet'
}
}).then(function(newSpreadSheet) {
var id = newSpreadSheet.result.spreadsheetId;
// 2. PUBLISH SPREADSHEAT VIA DRIVE API
drive.revisions.update({
fileId: id,
revisionId: 1
}, {
published: true, // <-- This is where the magic happens!
publishAuto: true
}).then(function() {
// 3. DISPLAY SPREADSHEET ON PAGE VIA IFRAME
var iframe = [
'<iframe ',
'src="https://docs.google.com/spreadsheets/d/',
id,
'/pubhtml?widget=true&headers=false&embedded=true"></iframe>'
].join('');
// We're using jQuery on the page, but you get the idea.
$('#container').html($(iframe));
});
});
如果我想发布一个 Google Sheets spreadsheet 以便我可以将它嵌入到 iframe 中的页面上,我将手动执行以下操作:
- 导航到 Google 驱动器
- 打开价差sheet
- 文件 > 发布到 Web > 嵌入 > 将生成的 iframe link 复制到 html 文件中
如何在前端使用 JavaScript 通过 Google Sheets API 以编程方式实现上述目标?我在我的应用程序中即时生成传播sheets,并希望在创建后立即将它们嵌入到页面中。
创建 sheet 后,我可以动态创建具有必要属性(sheet 的 ID 等)的 iframe 元素。这会引发错误。从这个 question 看来,sheet 需要具有 published: true
属性或其他东西,但这需要使用驱动器 API - 我试图避免这种情况。是否可以通过工作表 API?
正如您得出的结论,今天无法通过表格 API,只能通过驱动器 API(使用 PATCH https://www.googleapis.com/drive/v3/files/fileId/revisions/revisionId
请求,记录在 https://developers.google.com/drive/v3/reference/revisions/update).
在搜索整个表格 API、谷歌搜索和一般的自我反省之后,我别无选择,只能包括驱动器 API 并用它来完成我的命令。这是我想出的解决方案。希望这对其他人有帮助!
将 Google 中的此脚本用于 index.html
文件中的客户端 JS 库:
<body>
...
<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
</body>
然后是 JS 的东西:
// Cache the api's into variables.
var sheets = gapi.client.sheets;
var drive = gapi.client.drive;
// 1. CREATE NEW SPREADSHEET
sheets.spreadsheets.create({
properties: {
title: 'new-sheet'
}
}).then(function(newSpreadSheet) {
var id = newSpreadSheet.result.spreadsheetId;
// 2. PUBLISH SPREADSHEAT VIA DRIVE API
drive.revisions.update({
fileId: id,
revisionId: 1
}, {
published: true, // <-- This is where the magic happens!
publishAuto: true
}).then(function() {
// 3. DISPLAY SPREADSHEET ON PAGE VIA IFRAME
var iframe = [
'<iframe ',
'src="https://docs.google.com/spreadsheets/d/',
id,
'/pubhtml?widget=true&headers=false&embedded=true"></iframe>'
].join('');
// We're using jQuery on the page, but you get the idea.
$('#container').html($(iframe));
});
});