我为这个用例制作了一个 Angular 库!
使用ng-google-sheets-db,您可以轻而易举地从 Google 表格中加载数据,并使用Google Sheets 作为 Angular 应用的(只读)后端!您可以查看Stackblitz example app。
安装
ng add ng-google-sheets-db
或
npm install ng-google-sheets-db
用法
谷歌表格
- 创建Google Sheet:
- 第一行必须是标题。
- 以下行是您的条目,每行一个条目。
- 您可能有一个 活动 列,您可以使用它启用或禁用行/条目。
- 可通过here 获取 Google 表格演示电子表格。
- 分享您的工作表:
- [文件] → [分享] → 在模式底部的“获取链接”处单击[更改为知道链接的任何人] 以成为“查看者”。
- 获取电子表格 ID(即
1gSc_7WCmt-HuSLX01-Ev58VsiFuhbpYVo8krbPCvvqA):它是 Google 电子表格 URL 的一部分。
- 获取工作表名称:工作表的名称可以在您的 Google 电子表格底部找到。
- 可选:为您的 Google 帐户启用2-Step Verification 可能是个好主意,如果您还没有这样做的话:wink:。
谷歌云平台 (GCP)
一个很好的概述指南是Get started as a Workspace developer。
- 在Google Cloud Console 中创建一个新项目。
- 启用 Google Sheets API:[API 和服务] → [启用 API 和服务] → 搜索“Google Sheets API”→ [启用]。
- 创建 API 密钥:[APIs & Services] → [Credentials] → [+ CREATE CREDENTIALS] → [API key] → [RESTRICT KEY] → 在“应用程序限制”中选择“HTTP 引用(网站)”和“网站限制”并在“API 限制”中选择“限制键”并选择“Google Sheets API”→[保存]。
- 获取生成的 API 密钥。
角度
将GoogleSheetsDbService 作为提供者添加到您应用的模块中,并将Angular 的HttpClientModule 添加到导入中:
import { HttpClientModule } from '@angular/common/http';
import { API_KEY, GoogleSheetsDbService } from 'ng-google-sheets-db';
@NgModule({
...
imports: [
HttpClientModule,
...
],
providers: [
{
provide: API_KEY,
useValue: <YOUR_GOOGLE_SHEETS_API_KEY>,
},
GoogleSheetsDbService
],
...
})
export class AppModule { }
导入并注入到组件的构造函数中:
import { GoogleSheetsDbService } from 'ng-google-sheets-db';
@Component({
...
})
export class YourComponent implements OnInit {
characters$: Observable<Character[]>;
constructor(private googleSheetsDbService: GoogleSheetsDbService) { }
ngOnInit(): void {
this.characters$ = this.googleSheetsDbService.get<Character>('1gSc_7WCmt-HuSLX01-Ev58VsiFuhbpYVo8krbPCvvqA', "Characters", characterAttributesMapping);
}
属性映射
attributesMapping 将 Google 电子表格列映射到您的结果对象。
const attributesMapping = {
id: "ID",
name: "Name",
email: "Email Address",
contact: {
_prefix: "Contact ",
street: "Street",
streetNumber: "Street Number",
zip: "ZIP",
city: "City",
},
skills: {
_prefix: "Skill ",
_listField: true,
},
};
例如,Google 电子表格列 电子邮件地址 映射到结果对象属性 email。
嵌套对象
contact 是嵌套对象的示例。您可以将_prefix 定义为嵌套对象所有列的前缀。请注意,_prefix 可能需要一个尾随空格。
列表
skills 是一个列表示例。您需要为列表的所有列设置_listField 和_prefix。在此示例中,所有以 _Skill _ 开头且数量不断增加的列都是列表的一部分,即 Skill 1、Skill 2 等。请注意 _prefix可能需要一个尾随空格。
它带有一个step by step usage guide 和一个demo application!