Configure a Feishu Bitable data source
The AE DataOps Platform supports using Feishu Bitable as a data source and writing the data in its tables to the Built-in Warehouse for data synchronization.
This article describes how to configure a Feishu Bitable (LarkSheet) data source.
Supported versions
- Feishu Bitable in any SaaS edition or private deployment.
Limitations
- Feishu Bitable data sources support only offline reads (as a Data Source) and can't be written to as a Data Target.
- When reading Bitable data, only fields of the String/ Datetime/ Date types can be read. Reading as other data types isn't supported yet.
- Feishu spreadsheets have no concept of a header row. However, to make Feishu spreadsheet import tasks more standardized, we use the following convention:
The first row of the table is used as the header. The header must be a series of cells that starts from cell A1 and is contiguous, non-empty, and unique. The header is used only for field mapping and isn't transferred as data.
For example, the header row data is as follows:- Invalid header (column D is empty)
| A | B | C | D | E |
|---|---|---|---|---|
| Name | Age | Hobby | School |
Prerequisites
1. Prepare a Feishu custom app and configure permissions
Refer: https://open.feishu.cn/document/best-practices/intro-to-custom-app-review
To call Feishu APIs, the spreadsheet owner must authorize a Feishu Docs app (also called a Feishu custom app) to fetch data
It's an internal application of your organization, so you need to prepare an app with complete permissions first.
In advance, create a Custom App on the Feishu Open Platform and grant the Custom App read and edit permissions for spreadsheets.
Grant the following permissions:
-
View, edit, and manage Wiki: wiki:wiki
-
View, comment on, edit, and manage documents: docs:doc
-
View, comment on, edit, and manage Bitables: bitable:app
-
View, comment on, edit, and manage spreadsheets: sheets:spreadsheet
-
View, comment on, edit, and manage all files in Drive: drive:drive
-
Check whether the current user has permissions on docs: docs:permission.member:auth
For details, see Custom app development process.
2. Get the App ID and App Secret
Get the app credentials from the Feishu Developer Console, enter them in the connector of the AE DataOps Platform, and pass the connection test.
Enter the obtained App id and Secret in the data source configuration of the integration plan
3. Find the Bitable to connect
Assign permissions to the Bitable you want to connect. At a minimum, assign the Anyone in the organization with the link can view permission.
- If you select Anyone in the organization with the link can view/can edit, an organization permission check is performed when the DataOps Platform gets data from the Feishu spreadsheet through the link;
- If you select Anyone on the internet with the link can view/can edit, the data of the Feishu spreadsheet behind the link can be obtained directly.
Pay attention to your organization's data security: assign appropriate permissions and keep the link information safe
In the Feishu Bitable, add a document app: add the Custom App you created and grant it read or edit permission as needed.
4. Get the Bitable link
Get the link to the Bitable you want to connect.
5. Supported ways to get a Bitable
| Bitable storage location | Description | Supported |
|---|---|---|
| Bitables in a Wiki | Resources in a Wiki are resources mounted in the Wiki.
| Supported |
| Bitables in a personal Base | Bitable resources in your personal Feishu Drive.
| Supported |
| Bitables in Feishu Docs | Bitables embedded in Feishu Docs | Not supported yet |
Create a Feishu Bitable data source
In the DataOps Platform - Integration module, you can choose to add a Feishu Bitable data source.
Data source configuration parameters
Fill in the configuration required by the data source and pass the connectivity test to create the Feishu Bitable data source.
| Field name | Description |
|---|---|
| Basic Information | |
| *Datasource Name | Must be unique within the DataOps Platform space. Can contain only letters, digits, and underscores, and can't start with a digit or an underscore |
| Remarks | Optional |
| Data source configuration | |
| APP ID | Application credential account |
| APP Secret | Application credential password |
| Base URL | Domain name. Defaults to https://open.feishu.cn For a privately deployed Feishu, enter your private domain name |
Parameters whose names start with * are required; parameters without * are optional.
Create an offline sync task
After you create the Feishu Bitable data source and pass the connectivity test as described above, you can configure a Feishu Bitable offline read task for your scenario.
Feishu Bitable as the Data Source
Select Feishu Bitable as the Data Source and configure the following parameters:
| Field name | Description |
|---|---|
| *Source Type | Select Feishu Bitable as the type of the Data Source |
| *Datasource Name | A Feishu data source registered on the data source management page; select it from the drop-down list. If you haven't created the data source yet, click the Data sources management button to create a Feishu Bitable data source. |
| *Larksheet URL | Copy the URL of the Feishu Bitable you want to sync, paste it into the text box, and click Check URL |
| *Source Table | Name of the table to read in the Feishu Bitable; select it from the drop-down list
|
| *Source View | Name of the view to read in the table; select it from the drop-down list
|
If data retrieval fails, the possible error messages and solutions are as follows:
- Check the Feishu integration connectivity: the integration isn't enabled, the configuration is incomplete, or the token has expired;
- No permission to get the table information. Enable the permissions for the corresponding API: The API permissions of the Feishu app aren't enabled;
- Provide a valid Feishu Bitable link: Check whether the provided link is correct;
- Request to the Feishu API failed: The data is too large and the server timed out, or the previously submitted change hasn't finished processing. Retry as appropriate;
- Check the permission settings of the table link: The link sharing scope of the spreadsheet or Bitable needs to be adjusted;
- Feishu API request failed: Find the cause in Feishu's official error documentation;
Supported field types
Because Feishu spreadsheets have no enforced schema constraints, the DataOps Platform treats every cell in the table as a string, except for the Date and Datetime field types, which are recognized and handled specially. The corresponding fields in the target Writer data source should preferably also be of the string type; otherwise, jobs may fail because of data format conversion errors.
- By default, data is read up to the last column with data in the table, or according to a custom number of columns. Empty columns in between are filled with null
- Feishu spreadsheets count empty rows in the sheet's row count, so empty data may appear.
- Column names must be unique
- Formulas aren't supported
Field mapping
After configuring the data source and the target, create field mappings. The system automatically syncs data from source fields to target fields based on the mappings. You can configure field mappings in three ways:
- Method 1: Custom selection. Select a source table field, then select the target field in the target table
- Method 2: Name Mapping. The system automatically maps fields with the same name in the source and target tables
- Method 3: Line Mapping. The system automatically maps fields in the same row
Note that each target field can correspond to only one source field
Basic information settings
Finally, set the basic information of the integration plan, including the plan name, owner, synchronization rate, and remarks.
When you're done, click Save to create the integration plan.
Note: The plan name can't be changed after it's saved
The details page looks like this:
Mount an offline sync plan on a Flow
Mount on Flow
1. Start mounting
- On the integration plan details page, click Mount on task flow in the upper-right corner
2. Select a Flow
-
Select the target Flow from the drop-down menu
-
To create a new Flow:
- Click the New Flow shortcut button below the drop-down menu
- Or go to the Dev module to create one
-
Tip: If the target Flow isn't shown, click the ↻ refresh button on the right
3. Create a sync node
- In the Flow, create a node of the Offline sync plan type
- The node is linked to the current integration plan. When the node runs, it triggers a run of that integration plan
4. Complete mounting
- Click Create node and mount on it to complete the configuration
- After mounting succeeds, click Go to flow page to view the result right away
Note: The task node created by mounting is in the unreleased state. We recommend going to the Flow and releasing the node.
Unmount from a Flow
To unmount an offline sync plan from a Flow:
- If the Flow hasn't been released yet, go to the Flow that the plan is mounted on and delete the Offline sync plan task node in Dev Mode.
- If the Flow has already been released, after deleting the Offline sync plan task node in Dev Mode, release the Flow again. This also unmounts the node from the Production environment.

