102 lines
2.9 KiB
TypeScript
102 lines
2.9 KiB
TypeScript
import { LarkServer } from "../../types/larkServer"
|
|
import LarkBaseService from "./base"
|
|
|
|
class LarkSheetService extends LarkBaseService {
|
|
/**
|
|
* 向电子表格中插入行。
|
|
* @param sheetToken 表格令牌。
|
|
* @param range 插入数据的范围。
|
|
* @param values 要插入的值。
|
|
* @returns 返回一个包含响应数据的Promise。
|
|
*/
|
|
async insertRows(sheetToken: string, range: string, values: string[][]) {
|
|
const path = `/sheets/v2/spreadsheets/${sheetToken}/values_append?insertDataOption=INSERT_ROWS`
|
|
return this.post<LarkServer.BaseRes>(path, {
|
|
valueRange: {
|
|
range,
|
|
values,
|
|
},
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取指定范围内的电子表格数据。
|
|
* @param sheetToken 表格令牌。
|
|
* @param range 要获取数据的范围。
|
|
* @returns 返回一个包含响应数据的Promise。
|
|
*/
|
|
async getRange(sheetToken: string, range: string) {
|
|
const path = `/sheets/v2/spreadsheets/${sheetToken}/values/${range}?valueRenderOption=ToString`
|
|
return this.get<LarkServer.SpreadsheetRes>(path)
|
|
}
|
|
|
|
/**
|
|
* 获取指定表格的所有数据表(多维表格专用)
|
|
* @param appToken 表格令牌。
|
|
* @returns 返回一个包含响应数据的Promise。
|
|
*/
|
|
async getTables(appToken: string) {
|
|
const path = `/bitable/v1/apps/${appToken}/tables`
|
|
const tableList = [] as LarkServer.TableData[]
|
|
let hasMore = true
|
|
let pageToken = ""
|
|
while (hasMore) {
|
|
const { data, code } = await this.get<
|
|
LarkServer.BaseListRes<LarkServer.TableData>
|
|
>(path, {
|
|
page_size: 100,
|
|
page_token: pageToken,
|
|
})
|
|
if (code !== 0) break
|
|
tableList.push(...data.items)
|
|
hasMore = data.has_more
|
|
pageToken = data.page_token
|
|
}
|
|
return {
|
|
code: 0,
|
|
data: tableList,
|
|
message: "ok",
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取指定数据表的所有视图(多维表格专用)
|
|
* @param appToken 表格令牌。
|
|
* @param tableId 表格ID。
|
|
* @returns 返回一个包含响应数据的Promise。
|
|
*/
|
|
async getViews(appToken: string, tableId: string) {
|
|
const path = `/bitable/v1/apps/${appToken}/tables/${tableId}/views`
|
|
let has_more = true
|
|
const res = [] as LarkServer.ViewData[]
|
|
while (has_more) {
|
|
const { data, code } = await this.get<
|
|
LarkServer.BaseListRes<LarkServer.ViewData>
|
|
>(path, {
|
|
page_size: 100,
|
|
})
|
|
if (code !== 0) break
|
|
res.push(...data.items)
|
|
has_more = data.has_more
|
|
}
|
|
return {
|
|
code: 0,
|
|
data: res,
|
|
message: "ok",
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取指定数据表的记录。(多维表格专用)
|
|
* @param appToken 表格令牌。
|
|
* @param tableId 表格ID。
|
|
* @returns 返回一个包含响应数据的Promise。
|
|
*/
|
|
async getRecords(appToken: string, tableId: string) {
|
|
const path = `/bitable/v1/apps/${appToken}/tables/${tableId}/records`
|
|
return this.get<LarkServer.BaseRes>(path)
|
|
}
|
|
}
|
|
|
|
export default LarkSheetService
|