📜  将 luno 定价导入 google sheet api - TypeScript (1)

📅  最后修改于: 2023-12-03 15:39:12.876000             🧑  作者: Mango

将 Luno 定价导入 Google Sheets API - TypeScript

在本文中,我们将探讨如何使用 TypeScript 和 Google Sheets API 将 Luno 的定价信息导入到 Google Sheets 中。

准备工作

在开始之前,您需要完成以下准备工作:

  1. 确保您已经安装了 Node.js 以及 TypeScript。
  2. 拥有 Luno 账户,并且已经生成了 API 密钥。
  3. 拥有 Google 账户,并且已经创建了一个 Google Sheets 文件。
安装依赖

在开始编写代码之前,让我们先安装一些必要的依赖项:

npm install google-auth-library googleapis
npm install -D @types/google-auth-library @types/googleapis

这里我们使用了 google-auth-librarygoogleapis 两个依赖项,前者用于处理授权,后者用于操作 Google Sheets API。

授权

在使用 Google Sheets API 之前,您需要先获取授权。这一步需要一些交互,并且需要您自行完成。

  1. 在 Google Developers Console 中创建一个项目,并为该项目启用 Google Sheets API。
  2. 创建一个服务账户,并为其生成一个 JSON 格式的密钥文件。
  3. 将密钥文件中的 client_email 复制到您的 Google Sheets 文件的共享人列表中。

完成上述步骤后,您可以使用以下代码生成一个 authorized 的客户端:

import { google } from 'googleapis';
import { JWT } from 'google-auth-library';

const auth = new JWT({
  keyFile: 'path/to/your/keyfile.json',
  scopes: [
    'https://www.googleapis.com/auth/spreadsheets',
  ],
});

const sheets = google.sheets({
  version: 'v4',
  auth: auth,
});
获取 Luno 定价数据

通过 Luno 的 API,我们可以轻松获取定价数据。以下是一个获取 BTC/USD 定价数据的示例:

import axios from 'axios';

const result = await axios.get(
  'https://api.luno.com/api/1/ticker?pair=XBTUSD'
);

const { ask, bid } = result.data;
const price = (ask + bid) / 2;
将数据导入到 Google Sheets

我们可以使用 sheets.spreadsheets.values.update 方法将数据导入到 Google Sheets 中。以下是一个将 BTC/USD 定价数据导入到 Google Sheets 的示例:

const spreadsheetId = 'SPREADSHEET_ID_HERE';
const range = 'Sheet1!A2:B2';

await sheets.spreadsheets.values.update({
  spreadsheetId: spreadsheetId,
  range: range,
  valueInputOption: 'RAW',
  requestBody: {
    values: [
      [new Date().toISOString(), price],
    ],
  },
});

这里我们假设您的工作簿只有一个工作表,并且要将数据写入第一个工作表的第二行。

完整示例

下面是将 Luno 定价导入 Google Sheets 的完整示例:

import { google } from 'googleapis';
import { JWT } from 'google-auth-library';
import axios from 'axios';

const auth = new JWT({
  keyFile: 'path/to/your/keyfile.json',
  scopes: [
    'https://www.googleapis.com/auth/spreadsheets',
  ],
});

const sheets = google.sheets({
  version: 'v4',
  auth: auth,
});

const spreadsheetId = 'SPREADSHEET_ID_HERE';
const range = 'Sheet1!A2:B2';

const result = await axios.get(
  'https://api.luno.com/api/1/ticker?pair=XBTUSD'
);

const { ask, bid } = result.data;
const price = (ask + bid) / 2;

await sheets.spreadsheets.values.update({
  spreadsheetId: spreadsheetId,
  range: range,
  valueInputOption: 'RAW',
  requestBody: {
    values: [
      [new Date().toISOString(), price],
    ],
  },
});
结论

在本文中,我们学习了如何使用 TypeScript 和 Google Sheets API 将 Luno 的定价信息导入到 Google Sheets 中。通过这个方法,您可以定期更新工作簿中的数据,以方便跟踪价格变化,收集咨询信息等。