typescript 如何使用谷歌工作表作为只读数据库的Angular ,而不使工作表公开

d8tt03nd  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(132)

我正在尝试使用Google Sheets文档作为我的Angular 应用程序的只读数据库。我尝试了一些方法来做到这一点,但所有这些方法的问题是,它们都要求公开共享Sheet(任何拥有链接的人都可以访问Sheet)。但我想要的是通过凭据使用服务帐户与特定用户共享它。

如果你知道任何解决方案或遇到关于这个主题的文章,请与我分享。谢谢。

zujrkrfu

zujrkrfu1#

以下是您需要执行的步骤,以便从Google Sheets读取到Angular:

步骤1:准备Google表单

1.)确保工作表中的所有单元格都设置为“纯文本”格式。要执行此操作,请单击工作表左上角行和列交叉的位置以选择所有单元格,然后从顶部菜单中选择Format > Number > Plain text

2.)转到共享,然后在“一般访问”下,选择“任何有链接的人”,然后单击Done。我相信在你的情况下,这一步是可选的,因为你不希望工作表是公共的。
3.)进入顶部菜单中的File > Share > Publish to web。设置您要发布的内容的范围,然后单击Publish。不幸的是,在您的情况下,这一步不是可选的!

第2步:获取Google工作表数据

使用下面的代码示例从Google Sheet中提取纯文本形式的原始数据:

const docId = '1vLjJqvLGdaS39ccsvoU58kEWXngzV_VXtto07Ki6qVo';
const sheetId = ''; // to get a specific sheet by ID, use '&gid=###'
const url = `https://docs.google.com/spreadsheets/d/${docId}/gviz/tq?tqx=out:json${sheetId}`;
this.http.get(url, {
   responseType: 'text',
}).subscribe((response: string): void => {
   console.log(response);
});

步骤3:将原始文本解析为JSON

使用以下示例将原始文本解析为JSON:

const rawJSONText = response.match(/google\.visualization\.Query\.setResponse\(([\s\S\w]+)\)/); // strip the header response
const json = JSON.parse(rawJSONText[1]);
console.log(json);

希望这对你有帮助,干杯!

相关问题