直到使用Node.js将Airtable转化为API并将其转换为JSON数据

我正在使用GoogleSpreadSheet作为简易数据库,以代替生成JSON。但是,我发现在使用了GAS的表格和未使用GAS的表格之间变得混乱了起来。所以,我在想是否有任何替代方法可以免费使用,于是我决定尝试使用Airtable。

我也有点在意。

准备工作空间

スクリーンショット 2021-11-30 16.59.02.png

首先,我们需要创建一个名为Test的工作区。我已经将工作表命名为”TestTable”。

获取API密钥

airtable.jpg

点击右上角的图标,进入“账户”页面,可以生成API密钥,生成并保存好。

スクリーンショット 2021-11-30 16.30.55.png

获取Test表的ID

当您点击https://airtable.com/api/链接时,会自动创建一个专属于您工作区的精彩用户体验的文档。

进入图像的”Test”(您选择的任何工作区)。

スクリーンショット 2021-11-30 17.03.32.png
https://airtable.com/あなたのテーブルID/api/docs#javascript/ratelimits

由于存在具有指定网址的表ID,将会保存”你的表ID”。

试着获取 Name 列的列名

目录结构(省略了node_modules等)

AirtableTest/
 generated/
 .env
 index.js
 package.json

可以使用”yarn init”等命令进行目录准备。

安装图书馆。

yarn add -D airtable dotenv

添加脚本并设置执行命令。

省略
  "scripts": {
    "start": "node -r dotenv/config index.js"
  }
省略

设定环境变量

AIRTABLE_API_KEY=あなたのAPIキー

获取表中Name列的列信息

const base = require('airtable').base('あなたのテーブルID');
const app = base("TestTable")
const airtableLists = app.select({view: "Grid view"})
airtableLists.firstPage((error, records) => {
  const names = records.map(record =>
    record.get("Name")
  )
  console.log(names);
});

试一试

yarn start
yarn run v1.22.10
$ node -r dotenv/config index.js
[ 'hoge', 'hage', 'fuga', undefined ]
✨  Done in 2.35s.

如果返回的值如上所示,那就可以了。

将其转化为JSON

我将试图将在此处获取的数据转化为JSON数据。

const fs = require('fs');
const base = require('airtable').base('あなたのテーブルID');
const app = base("TestTable");
const airtableLists = app.select({view: "Grid view"});

const createJSON = (airtableObj) => {
  const JSONdata = JSON.stringify(airtableObj, null, 2);
  fs.writeFileSync('generated/airtable.json', JSONdata);
}

const getAirtableObj = (airtableLists) => {
  return airtableLists.firstPage((error, records) => {
    const airtableObj = records.map(record => ({ Name: record.get("Name"), Notes: record.get("Notes") }));
    createJSON(airtableObj);
  });
}

getAirtableObj(airtableLists);

在这里生成/airtable.json,并通过根目录指定。

const createJSON = (airtableObj) => {
  const JSONdata = JSON.stringify(airtableObj, null, 2);
  fs.writeFileSync('generated/airtable.json', JSONdata);
}

请查看生成的JSON。

我们可以看到,原本是空白的栏位现在是空的,但仍然可以获取到如下内容。

[
  {
    "Name": "hoge",
    "Notes": "ほい"
  },
  {
    "Name": "hage",
    "Notes": "はい"
  },
  {
    "Name": "fuga",
    "Notes": "へい"
  },
  {}
]
广告
将在 10 秒后关闭
bannerAds