Skip to content

vikadata/vika.go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PLEASE NOTE, THIS PROJECT IS NO LONGER BEING MAINTAINED


Vika

Vika Golang SDK 是对维格表 API 的封装。

快速开始

环境要求

go 1.15 +

安装

go get github.com/vikadata/vika.go

获取 API TOKEN

访问维格表的工作台,点击左下角的个人头像,进入「用户中心 > 开发者配置」。点击生成Token(首次使用需要绑定邮箱)。

使用

package main

import (
    "fmt"
    "github.com/vikadata/vika.go/lib/common"
    vkerror "github.com/vikadata/vika.go/lib/common/error"
    "github.com/vikadata/vika.go/lib/common/profile"
    vika "github.com/vikadata/vika.go/lib/datasheet"
)

func main() {
    credential := common.NewCredential("YOUR_API_TOKEN")
    cpf := profile.NewClientProfile()
    datasheet, _ := vika.NewDatasheet(credential, "datasheetId", cpf)
    // 获取全部的数据
    request := vika.NewDescribeRecordRequest()
    request.Sort = []*vika.Sort{
        {
            Field: common.StringPtr("number_field"),
            Order: common.StringPtr("desc"),
        },
    }
    request.Fields = common.StringPtrs([]string{"number_field"})
    records, err := datasheet.DescribeAllRecords(request)
    if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的数据
    fmt.Printf("%#v\n", records)
    // 分页获取数据
    page, err := datasheet.DescribeRecords(request)
	if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的数据
    fmt.Printf("%#v\n", page)
    // 添加记录
    createRequest := vika.NewCreateRecordsRequest()
    createRequest.Records = []*vika.Fields{
        {
            Fields: &vika.Field{
                "number_field": vika.NumberFieldValue(900),
            },
        },
    }
    createRecords, err := datasheet.CreateRecords(createRequest)
    if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的数据
    fmt.Printf("%#v\n", createRecords)
	// 修改记录
    modifyRequest := vika.NewModifyRecordsRequest()
    modifyRequest.Records = []*vika.BaseRecord{
        {
            Fields: &vika.Field{
                "number_field": vika.NumberFieldValue(1000),
            },
            RecordId: common.StringPtr("recordId"),
        },
    }
    modifyRecords, err := datasheet.ModifyRecords(modifyRequest)
    if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的数据
    fmt.Printf("%#v\n", modifyRecords)
	// 删除记录
    deleteRequest := vika.NewDeleteRecordsRequest()
    request.RecordIds =	common.StringPtrs([]string{"recordId1", "recordId2"})
    err = datasheet.DeleteRecords(deleteRequest)
    if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 上传文件
    cpf.Upload = true
    uploadRequest := vika.NewUploadRequest()
    request.FilePath = "image.png"
    attachment, err := datasheet.UploadFile(request)
    if _, ok := err.(*vkerror.SDKError); ok {
       fmt.Printf("An API error has returned: %s", err)
       return
    }
    // 非SDK异常,直接失败。实际代码中可以加入其他的处理。
    if err != nil {
        panic(err)
    }
    // 打印返回的数据
    fmt.Printf("%#v\n", attachment)
}