Giter Site home page Giter Site logo

vika.go's Introduction

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)
}

vika.go's People

Contributors

zoe-icu avatar github-actions[bot] avatar xukecheng avatar kwp-lab avatar

Stargazers

Tea avatar  avatar FnEsc avatar lesserror-hxr avatar TheaXD avatar Edward avatar minhuayan avatar Bieber avatar  avatar  avatar Shawn Deng avatar rain avatar Yongzheng Lai avatar ouyangyu avatar roowe avatar Mayne avatar Kelly Peilin Chan avatar

Watchers

Kelly Peilin Chan avatar James Cloos avatar Mayne avatar Bieber avatar  avatar

Forkers

zoe-icu fnesc

vika.go's Issues

RecordIds 拼接参数异常

	var body struct {
		DataSheetID string `json:"datasheet_id"`
		RecordID    string `json:"record_id"`
	}
	if err := gin_context.ShouldBindJSON(&body); err != nil {
		gin_context.Set("resp", err)
		return
	}

	credential := common.NewCredential("**************")
	cpf := profile.NewClientProfile()
	datasheet, _ := vika.NewDatasheet(credential, body.DataSheetID, cpf)
	request := vika.NewDescribeRecordRequest()
	request.RecordIds = common.StringPtrs([]string{body.RecordID})
	records, err := datasheet.DescribeAllRecords(request)
	if err != nil {
		gin_context.Set("resp", err)
		return
	}

	for _, record := range records {
		fmt.Println(
			record.RecordId,
			record.CreatedAt,
		)
		for name, value := range *record.Fields {
			fmt.Println(name, value)
		}
		fmt.Println()
	}

	gin_context.Set("resp", "ok")

其中

        request.RecordIds = common.StringPtrs([]string{body.RecordID}) 

拼接的url 调试结果是

        https://api.vika.cn/fusion/v1/datasheets/datasheet_id/records?pageNum=1&pageSize=1000&recordIds.0=record_id

RecordIds 参数有点问题 recordIdsa.0

报错panic: lookup api.lib.cn: no such host

datasheet := vika.New(vika.VikaConfig{Token: appToken}).Datasheet(tableToken)

res, err := datasheet.Upload("upload.xlsx")
if err != nil {
	panic(err)
}

报错panic: lookup api.lib.cn: no such host

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.