直到使用Node.js将Airtable转化为API并将其转换为JSON数据
我正在使用GoogleSpreadSheet作为简易数据库,以代替生成JSON。但是,我发现在使用了GAS的表格和未使用GAS的表格之间变得混乱了起来。所以,我在想是否有任何替代方法可以免费使用,于是我决定尝试使用Airtable。
我也有点在意。
准备工作空间
首先,我们需要创建一个名为Test的工作区。我已经将工作表命名为”TestTable”。
获取API密钥
点击右上角的图标,进入“账户”页面,可以生成API密钥,生成并保存好。
获取Test表的ID
当您点击https://airtable.com/api/链接时,会自动创建一个专属于您工作区的精彩用户体验的文档。
进入图像的”Test”(您选择的任何工作区)。
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": "へい"
},
{}
]