将私人工作表与 tabletop.js 一起使用
Using private sheets with tabletop.js
我过去用过 tabletop.js [1] 并且非常棒!你可以认真地做任何你想做的事。
我看到的唯一问题是您需要将电子表格发布到网络上,如果您处理的是敏感数据,这当然是非常危险的。
我现在需要在包含敏感数据的项目中使用它,所以我希望有人可以指导我如何将它用于未发布到 Web 的电子表格。
我已经搜索了很长时间但没有成功,但似乎 tabletop.js 确实支持私人工作表(这是添加此选项 [2] 的拉取请求)。
事实上,查看他们包含的文档 [1]:
authkey
authkey is the authorization key for private sheet support.
问:我应该如何使用授权密钥?有人可以提供一个例子让我试试吗?
提前致谢!
[1] https://github.com/jsoma/tabletop
[2] https://github.com/jsoma/tabletop/pull/64
这个答案怎么样?
问题和解决方法:
在“tabletop.js”处,从请求的端点(https://spreadsheets.google.com/feeds/list/###/###/private/values?alt=json
)来看,“tabletop.js”似乎使用了 Sheets API v3。当使用 authkey
时,将 oauth_token=authkey
添加到查询参数中。在这种情况下,不幸的是,似乎无法使用它访问私有电子表格。从这种情况来看,不幸的是,我认为在现阶段,“tabletop.js”可能无法使用私有电子表格。但我不确定这是否会在未来的更新中得到解决。当然,网络发布的Spreadsheet好像可以用这个库访问。
因此,在这个答案中,我想提出从电子表格中检索值作为 JSON 对象的解决方法。
模式 1:
在此模式中,使用了 Google Apps 脚本。使用 Google Apps 脚本,可以轻松访问私有电子表格。
示例脚本:
当您使用此脚本时,请将其复制并粘贴到脚本编辑器和运行函数myFunction
。
function myFunction() {
const spreadsheetId = "###"; // Please set the Spreadsheet ID.
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
const values = sheet.getDataRange().getValues();
const header = values.shift();
const object = values.map(r => r.reduce((o, c, j) => Object.assign(o, {[header[j]]: c}), {}));
console.log(object) // Here, you can see the JSON object from Spreadsheet.
}
- 我认为这可能是最简单的方法。
模式二:
在此模式中,使用了由 Google Apps 脚本创建的 Web 应用程序。使用Web Apps时,可以轻松访问私有电子表格。因为 Web 应用程序是使用 Google Apps 脚本创建的。在这种情况下,您可以通过登录 Google 帐户从外部访问 Web 应用程序。并且,可以在 HTML 和 Javascript.
中检索 JSON 对象
用法:
请执行以下流程。
1。创建 Google Apps 脚本的新项目。
Web Apps 的示例脚本是 Google Apps 脚本。所以请创建一个 Google Apps Script 的项目。为了使用文档服务,在这种情况下,Web Apps 被用作包装器。
如果要直接创建,请访问https://script.new/。在这种情况下,如果您未登录 Google,则会打开登录屏幕。所以请登录Google。这样,Google Apps Script 的脚本编辑器就打开了。
2。准备脚本。
请将以下脚本(Google Apps 脚本)复制并粘贴到脚本编辑器中。此脚本用于 Web 应用程序。
Google Apps 脚本端:Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
function getObjectFromSpreadsheet(spreadsheetId, sheetName) {
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
const values = sheet.getDataRange().getValues();
const header = values.shift();
const object = values.map(r => r.reduce((o, c, j) => Object.assign(o, {[header[j]]: c}), {}));
return object;
}
HTML&Javascript方:index.html
<script>
const spreadsheetId = "###"; // Please set the Spreadsheet ID.
const sheetName = "Sheet1"; // Please set the sheet name.
google.script.run.withSuccessHandler(sample).getObjectFromSpreadsheet(spreadsheetId, sheetName);
function sample(object) {
console.log(object);
}
</script>
spreadsheetId
和 sheetName
从 Javascript 端到 Google Apps 脚本端。从这种情况来看,在这种情况下,getObjectFromSpreadsheet
可能会代替“tabletop.js”。
3。部署 Web 应用程序。
- 在脚本编辑器上,通过“发布”->“部署为网络应用程序”打开一个对话框。
- Select “Me” for “执行应用程序:”。
- 至此,脚本运行作为所有者。
- Select “只有我自己” “有权访问该应用程序的人:”。
- 在这种情况下,为了访问 Web 应用程序,需要登录 Google 帐户。从你的情况来看,我认为这可能会有用。
- 单击“部署”按钮作为新的“项目版本”。
- 自动打开“需要授权”的对话框。
- 单击“查看权限”。
- Select自己的账号。
- 点击“此应用未验证”处的“高级”。
- 点击“转到###项目名称###(不安全)”
- 单击“允许”按钮。
- 点击“确定”。
- 复制 Web 应用程序的 URL。就像
https://script.google.com/macros/s/###/exec
。
- 当您修改 Google Apps 脚本时,请重新部署为新版本。这样,修改后的脚本就会反映到 Web 应用程序中。请注意这一点。
4。 运行 使用 Web 应用程序的功能。
您可以按如下方式测试以上脚本。
- 登录 Google 帐户。
- 使用浏览器访问 URL 等 Web 应用程序
https://script.google.com/macros/s/###/exec
。
这样,您就可以在控制台看到检索到的JSON对象。
注:
- 当您修改Web Apps的脚本时,请将Web Apps重新部署为新版本。由此,最新的脚本被反映到Web Apps。请注意这一点。
参考文献:
我过去用过 tabletop.js [1] 并且非常棒!你可以认真地做任何你想做的事。
我看到的唯一问题是您需要将电子表格发布到网络上,如果您处理的是敏感数据,这当然是非常危险的。
我现在需要在包含敏感数据的项目中使用它,所以我希望有人可以指导我如何将它用于未发布到 Web 的电子表格。
我已经搜索了很长时间但没有成功,但似乎 tabletop.js 确实支持私人工作表(这是添加此选项 [2] 的拉取请求)。
事实上,查看他们包含的文档 [1]:
authkey
authkey is the authorization key for private sheet support.
问:我应该如何使用授权密钥?有人可以提供一个例子让我试试吗?
提前致谢!
[1] https://github.com/jsoma/tabletop [2] https://github.com/jsoma/tabletop/pull/64
这个答案怎么样?
问题和解决方法:
在“tabletop.js”处,从请求的端点(https://spreadsheets.google.com/feeds/list/###/###/private/values?alt=json
)来看,“tabletop.js”似乎使用了 Sheets API v3。当使用 authkey
时,将 oauth_token=authkey
添加到查询参数中。在这种情况下,不幸的是,似乎无法使用它访问私有电子表格。从这种情况来看,不幸的是,我认为在现阶段,“tabletop.js”可能无法使用私有电子表格。但我不确定这是否会在未来的更新中得到解决。当然,网络发布的Spreadsheet好像可以用这个库访问。
因此,在这个答案中,我想提出从电子表格中检索值作为 JSON 对象的解决方法。
模式 1:
在此模式中,使用了 Google Apps 脚本。使用 Google Apps 脚本,可以轻松访问私有电子表格。
示例脚本:
当您使用此脚本时,请将其复制并粘贴到脚本编辑器和运行函数myFunction
。
function myFunction() {
const spreadsheetId = "###"; // Please set the Spreadsheet ID.
const sheetName = "Sheet1"; // Please set the sheet name.
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
const values = sheet.getDataRange().getValues();
const header = values.shift();
const object = values.map(r => r.reduce((o, c, j) => Object.assign(o, {[header[j]]: c}), {}));
console.log(object) // Here, you can see the JSON object from Spreadsheet.
}
- 我认为这可能是最简单的方法。
模式二:
在此模式中,使用了由 Google Apps 脚本创建的 Web 应用程序。使用Web Apps时,可以轻松访问私有电子表格。因为 Web 应用程序是使用 Google Apps 脚本创建的。在这种情况下,您可以通过登录 Google 帐户从外部访问 Web 应用程序。并且,可以在 HTML 和 Javascript.
中检索 JSON 对象用法:
请执行以下流程。
1。创建 Google Apps 脚本的新项目。
Web Apps 的示例脚本是 Google Apps 脚本。所以请创建一个 Google Apps Script 的项目。为了使用文档服务,在这种情况下,Web Apps 被用作包装器。
如果要直接创建,请访问https://script.new/。在这种情况下,如果您未登录 Google,则会打开登录屏幕。所以请登录Google。这样,Google Apps Script 的脚本编辑器就打开了。
2。准备脚本。
请将以下脚本(Google Apps 脚本)复制并粘贴到脚本编辑器中。此脚本用于 Web 应用程序。
Google Apps 脚本端:Code.gs
function doGet() {
return HtmlService.createHtmlOutputFromFile("index");
}
function getObjectFromSpreadsheet(spreadsheetId, sheetName) {
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
const values = sheet.getDataRange().getValues();
const header = values.shift();
const object = values.map(r => r.reduce((o, c, j) => Object.assign(o, {[header[j]]: c}), {}));
return object;
}
HTML&Javascript方:index.html
<script>
const spreadsheetId = "###"; // Please set the Spreadsheet ID.
const sheetName = "Sheet1"; // Please set the sheet name.
google.script.run.withSuccessHandler(sample).getObjectFromSpreadsheet(spreadsheetId, sheetName);
function sample(object) {
console.log(object);
}
</script>
spreadsheetId
和sheetName
从 Javascript 端到 Google Apps 脚本端。从这种情况来看,在这种情况下,getObjectFromSpreadsheet
可能会代替“tabletop.js”。
3。部署 Web 应用程序。
- 在脚本编辑器上,通过“发布”->“部署为网络应用程序”打开一个对话框。
- Select “Me” for “执行应用程序:”。
- 至此,脚本运行作为所有者。
- Select “只有我自己” “有权访问该应用程序的人:”。
- 在这种情况下,为了访问 Web 应用程序,需要登录 Google 帐户。从你的情况来看,我认为这可能会有用。
- 单击“部署”按钮作为新的“项目版本”。
- 自动打开“需要授权”的对话框。
- 单击“查看权限”。
- Select自己的账号。
- 点击“此应用未验证”处的“高级”。
- 点击“转到###项目名称###(不安全)”
- 单击“允许”按钮。
- 点击“确定”。
- 复制 Web 应用程序的 URL。就像
https://script.google.com/macros/s/###/exec
。- 当您修改 Google Apps 脚本时,请重新部署为新版本。这样,修改后的脚本就会反映到 Web 应用程序中。请注意这一点。
4。 运行 使用 Web 应用程序的功能。
您可以按如下方式测试以上脚本。
- 登录 Google 帐户。
- 使用浏览器访问 URL 等 Web 应用程序
https://script.google.com/macros/s/###/exec
。
这样,您就可以在控制台看到检索到的JSON对象。
注:
- 当您修改Web Apps的脚本时,请将Web Apps重新部署为新版本。由此,最新的脚本被反映到Web Apps。请注意这一点。