Scripting
Model

Cell values & field options

singleLineText

A single line of text.

Cell format

typedef
string

Field options

n/a

email

A valid email address (e.g. andrew@example.com).

Cell format

typedef
string

Field options

n/a

url

A valid URL (e.g. airtable.com or https://airtable.com/universe).

Cell format

typedef
string

Field options

n/a

multilineText

A long text field that can span multiple lines. May contain "mention tokens", e.g. <airtable:mention id="menE1i9oBaGX3DseR">@Alex</airtable:mention>

Cell format

typedef
string

Field options

n/a

number

A number.

The precision option indicates the number of digits shown to the right of the decimal point for this field.

Cell format

typedef
number

Field options

typedef
{
precision: number, // from 0 to 8 inclusive
}

percent

A percentage.

When reading from and writing to a "Percent" field, the cell value is a decimal. For example, 0 is 0%, 0.5 is 50%, and 1 is 100%.

Cell format

typedef
number

Field options

typedef
{
precision: number, // from 0 to 8 inclusive
}

currency

An amount of a currency.

Cell format

typedef
number

Field options

typedef
{
precision: number, // from 0 to 7 inclusive
symbol: string,
}

singleSelect

Single select allows you to select a single option from predefined options in a dropdown.

Cell read format

typedef
{
id: string,
name: string,
color?: string,
}

Cell write format

typedef
{ id: string } | { name: string }

Field options read format

typedef
{
choices: Array<{
id: string,
name: string,
color?: string,
}>,
}

Field options write format

typedef
{
choices: Array<
// New choice format
| {name: string, color?: string}
// Pre-existing choices use read format specified above
| {id: string, name: string, color?: string}
>
}

The default behavior of calling updateOptionsAsync on a "singleSelect" field allows choices to be added or updated, but not deleted. Therefore, you should pass all pre-existing choices in choices (similar to updating a "multipleSelects" field type cell value). You can do this by spreading the current choices:

Example
const selectField = table.getField('My select field');
await selectField.updateOptionsAsync({
choices: [
...selectField.options.choices,
{name: 'My new choice'},
],
});

If you want to allow choices to be deleted, you can pass an object with enableSelectFieldChoiceDeletion: true as the second argument. By passing this argument, any existing choices which are not passed again via choices will be deleted, and any cells which referenced a now-deleted choice will be cleared.

Example
const selectField = table.getField('My select field');
await selectField.updateOptionsAsync(
{
choices: selectField.options.choices.filter((choice) => choice.name !== 'Choice to delete'),
},
{enableSelectFieldChoiceDeletion: true},
);

multipleSelects

Multiple select allows you to select one or more predefined options from a dropdown

Similar to multipleAttachments and multipleCollaborators, this array-type field will override the current cell value when being updated. Be sure to spread the current cell value if you want to keep the currently selected choices.

Cell read format

typedef
Array<{
id: string,
name: string,
color?: string,
}>

The currently selected choices.

Cell write format

typedef
Array<{id: string} | {name: string}>

Field options read format

typedef
{
choices: Array<{
id: string,
name: string,
color?: string,
}>,
}

Field options write format

typedef
{
choices: Array<
// New choice format
| {name: string, color?: string}
// Pre-existing choices use read format specified above
| {id: string, name: string, color?: string}
>
}

The default behavior of calling updateOptionsAsync on a "multipleSelects" field allows choices to be added or updated, but not deleted. Therefore, you should pass all pre-existing choices in choices (similar to updating a "singleSelect" field type cell value). You can do this by spreading the current choices:

Example
const multipleSelectField = table.getField('My multiple select field');
await multipleSelectField.updateOptionsAsync({
choices: [
...multipleSelectField.options.choices,
{name: 'My new choice'},
],
});

If you want to allow choices to be deleted, you can pass an object with enableSelectFieldChoiceDeletion: true as the second argument. By passing this argument, any existing choices which are not passed again via choices will be deleted, and any cells which referenced a now-deleted choice will be cleared.

Example
const multipleSelectField = table.getField('My multiple select field');
await multipleSelectField.updateOptionsAsync(
{
choices: multipleSelectField.options.choices.filter((choice) => choice.name !== 'Choice to delete'),
},
{enableSelectFieldChoiceDeletion: true},
);

singleCollaborator

A collaborator field lets you add collaborators to your records. Collaborators can optionally be notified when they're added. A single collaborator field has been configured to only reference one user collaborator.

See Collaborator.

Cell read format

typedef
{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}

The currently selected user collaborator.

Cell write format

typedef
{
id: string,
}

Field options read format

typedef
{
choices: Array<{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}>,
}

Field options write format

Options are not required when creating a "singleCollaborator" field, and updating options is not supported

multipleCollaborators

A collaborator field lets you add collaborators to your records. Collaborators can optionally be notified when they're added. A multiple collaborator field has been configured to reference any number of user or user group collaborators.

Note: Adding user groups to multiple collaborator fields is an upcoming enterprise feature currently in beta, and will be generally released on August 29, 2022.

Similar to multipleAttachments and multipleSelects, this array-type field will override the current cell value when being updated. Be sure to spread the current cell value if you want to keep the currently selected collaborators.

See Collaborator.

Cell read format

typedef
Array<{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}>

The currently selected user or user group collaborators. The email property is either the email address of the user collaborator or an RFC 2822 mailbox-list (comma-separated list of emails) that can be used to contact all members of the user group collaborator.

Cell write format

typedef
Array<{ id: string }>

Field options read format

typedef
{
choices: Array<{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}>,
}

Field options write format

Options are not required when creating a "multipleCollaborators" field, and updating options is not supported

multipleRecordLinks

Link to another record.

When updating an existing linked record cell value, the specified array will overwrite the current cell value. If you want to add a new linked record without deleting the current linked records, you can spread the current cell value like so:

Example
let newForeignRecordIdToLink = 'recXXXXXXXXXXXXXX';
myTable.updateRecordAsync(myRecord, {
'myLinkedRecordField': [
...myRecord.getCellValue('myLinkedRecordField'),
{ id: newForeignRecordIdToLink }
]
})

Similarly, you can clear the current cell value by passing an empty array, or remove specific linked records by passing a filtered array of the current cell value.

Cell read format

typedef
Array<{
id: string,
name: string,
}>

The currently linked record IDs and their primary cell values from the linked table in string format.

Cell write format

typedef
Array<{ id: string }>

Field options read format

typedef
{
// The ID of the table this field links to
linkedTableId: string,
// The ID of the field in the linked table that links back
// to this one
inverseLinkFieldId?: string,
// The ID of the view in the linked table to use when showing
// a list of records to select from
viewIdForRecordSelection?: string,
// Whether linked records are rendered in the reverse order from the cell value in the
// Airtable UI (i.e. most recent first)
// You generally do not need to rely on this option.
isReversed: boolean,
// Whether this field prefers to only have a single linked record. While this preference
// is enforced in the Airtable UI, it is possible for a field that prefers single linked
// records to have multiple record links (for example, via copy-and-paste or programmatic
// updates).
prefersSingleRecordLink: boolean,
}

Field options write format

typedef
{
// The ID of the table this field links to
linkedTableId: TableId,
// The ID of the view in the linked table to use when showing
// a list of records to select from
viewIdForRecordSelection?: ViewId,
// Note: prefersSingleRecordLink cannot be specified via programmatic field creation
// and will be false for fields created within an app
}

Creating "multipleRecordLinks" fields is supported but updating options for existing "multipleRecordLinks" fields is not supported.

date

A date.

When reading from and writing to a date field, the cell value will always be an ISO 8601 formatted date.

The date format string follows the moment.js structure documented here

Cell read format

typedef
string

Cell write format

typedef
Date | string

Field options read format

typedef
{
dateFormat:
| {name: 'local', format: 'l'}
| {name: 'friendly', format: 'LL'}
| {name: 'us', format: 'M/D/YYYY'}
| {name: 'european', format: 'D/M/YYYY'}
| {name: 'iso', format: 'YYYY-MM-DD'}
}

Field options write format

typedef
{
dateFormat:
// Format is optional, but must match name if provided.
| {name: 'local', format?: 'l'}
| {name: 'friendly', format?: 'LL'}
| {name: 'us', format?: 'M/D/YYYY'}
| {name: 'european', format?: 'D/M/YYYY'}
| {name: 'iso', format?: 'YYYY-MM-DD'}
}

dateTime

A date field configured to also include a time.

When reading from and writing to a date time field, the cell value will always be an ISO 8601 formatted date time.

The date and time format strings follow the moment.js structure documented here

Cell read format

typedef
string

Cell write format

typedef
Date | string

For a dateTime field configured with a non utc or client time zone like America/Los_Angeles, ambiguous string inputs like "2020-09-05T07:00:00" and "2020-09-08" will be interpreted according to the timeZone of the field, and nonambiguous string inputs with zone offset like "2020-09-05T07:00:00.000Z" and "2020-09-08T00:00:00-07:00" will be interpreted as the underlying timestamp.

Field options read format

typedef
{
dateFormat:
| {name: 'local', format: 'l'}
| {name: 'friendly', format: 'LL'}
| {name: 'us', format: 'M/D/YYYY'}
| {name: 'european', format: 'D/M/YYYY'}
| {name: 'iso', format: 'YYYY-MM-DD'},
timeFormat:
| {name: '12hour', format: 'h:mma'}
| {name: '24hour', format: 'HH:mm'},
timeZone: 'utc' | 'client' | 'Africa/Abidjan' | 'Africa/Accra' | 'Africa/Addis_Ababa' | 'Africa/Algiers' | 'Africa/Asmara' | 'Africa/Bamako' | 'Africa/Bangui' | 'Africa/Banjul' | 'Africa/Bissau' | 'Africa/Blantyre' | 'Africa/Brazzaville' | 'Africa/Bujumbura' | 'Africa/Cairo' | 'Africa/Casablanca' | 'Africa/Ceuta' | 'Africa/Conakry' | 'Africa/Dakar' | 'Africa/Dar_es_Salaam' | 'Africa/Djibouti' | 'Africa/Douala' | 'Africa/El_Aaiun' | 'Africa/Freetown' | 'Africa/Gaborone' | 'Africa/Harare' | 'Africa/Johannesburg' | 'Africa/Juba' | 'Africa/Kampala' | 'Africa/Khartoum' | 'Africa/Kigali' | 'Africa/Kinshasa' | 'Africa/Lagos' | 'Africa/Libreville' | 'Africa/Lome' | 'Africa/Luanda' | 'Africa/Lubumbashi' | 'Africa/Lusaka' | 'Africa/Malabo' | 'Africa/Maputo' | 'Africa/Maseru' | 'Africa/Mbabane' | 'Africa/Mogadishu' | 'Africa/Monrovia' | 'Africa/Nairobi' | 'Africa/Ndjamena' | 'Africa/Niamey' | 'Africa/Nouakchott' | 'Africa/Ouagadougou' | 'Africa/Porto-Novo' | 'Africa/Sao_Tome' | 'Africa/Tripoli' | 'Africa/Tunis' | 'Africa/Windhoek' | 'America/Adak' | 'America/Anchorage' | 'America/Anguilla' | 'America/Antigua' | 'America/Araguaina' | 'America/Argentina/Buenos_Aires' | 'America/Argentina/Catamarca' | 'America/Argentina/Cordoba' | 'America/Argentina/Jujuy' | 'America/Argentina/La_Rioja' | 'America/Argentina/Mendoza' | 'America/Argentina/Rio_Gallegos' | 'America/Argentina/Salta' | 'America/Argentina/San_Juan' | 'America/Argentina/San_Luis' | 'America/Argentina/Tucuman' | 'America/Argentina/Ushuaia' | 'America/Aruba' | 'America/Asuncion' | 'America/Atikokan' | 'America/Bahia' | 'America/Bahia_Banderas' | 'America/Barbados' | 'America/Belem' | 'America/Belize' | 'America/Blanc-Sablon' | 'America/Boa_Vista' | 'America/Bogota' | 'America/Boise' | 'America/Cambridge_Bay' | 'America/Campo_Grande' | 'America/Cancun' | 'America/Caracas' | 'America/Cayenne' | 'America/Cayman' | 'America/Chicago' | 'America/Chihuahua' | 'America/Costa_Rica' | 'America/Creston' | 'America/Cuiaba' | 'America/Curacao' | 'America/Danmarkshavn' | 'America/Dawson' | 'America/Dawson_Creek' | 'America/Denver' | 'America/Detroit' | 'America/Dominica' | 'America/Edmonton' | 'America/Eirunepe' | 'America/El_Salvador' | 'America/Fort_Nelson' | 'America/Fortaleza' | 'America/Glace_Bay' | 'America/Godthab' | 'America/Goose_Bay' | 'America/Grand_Turk' | 'America/Grenada' | 'America/Guadeloupe' | 'America/Guatemala' | 'America/Guayaquil' | 'America/Guyana' | 'America/Halifax' | 'America/Havana' | 'America/Hermosillo' | 'America/Indiana/Indianapolis' | 'America/Indiana/Knox' | 'America/Indiana/Marengo' | 'America/Indiana/Petersburg' | 'America/Indiana/Tell_City' | 'America/Indiana/Vevay' | 'America/Indiana/Vincennes' | 'America/Indiana/Winamac' | 'America/Inuvik' | 'America/Iqaluit' | 'America/Jamaica' | 'America/Juneau' | 'America/Kentucky/Louisville' | 'America/Kentucky/Monticello' | 'America/Kralendijk' | 'America/La_Paz' | 'America/Lima' | 'America/Los_Angeles' | 'America/Lower_Princes' | 'America/Maceio' | 'America/Managua' | 'America/Manaus' | 'America/Marigot' | 'America/Martinique' | 'America/Matamoros' | 'America/Mazatlan' | 'America/Menominee' | 'America/Merida' | 'America/Metlakatla' | 'America/Mexico_City' | 'America/Miquelon' | 'America/Moncton' | 'America/Monterrey' | 'America/Montevideo' | 'America/Montserrat' | 'America/Nassau' | 'America/New_York' | 'America/Nipigon' | 'America/Nome' | 'America/Noronha' | 'America/North_Dakota/Beulah' | 'America/North_Dakota/Center' | 'America/North_Dakota/New_Salem' | 'America/Nuuk' | 'America/Ojinaga' | 'America/Panama' | 'America/Pangnirtung' | 'America/Paramaribo' | 'America/Phoenix' | 'America/Port-au-Prince' | 'America/Port_of_Spain' | 'America/Porto_Velho' | 'America/Puerto_Rico' | 'America/Punta_Arenas' | 'America/Rainy_River' | 'America/Rankin_Inlet' | 'America/Recife' | 'America/Regina' | 'America/Resolute' | 'America/Rio_Branco' | 'America/Santarem' | 'America/Santiago' | 'America/Santo_Domingo' | 'America/Sao_Paulo' | 'America/Scoresbysund' | 'America/Sitka' | 'America/St_Barthelemy' | 'America/St_Johns' | 'America/St_Kitts' | 'America/St_Lucia' | 'America/St_Thomas' | 'America/St_Vincent' | 'America/Swift_Current' | 'America/Tegucigalpa' | 'America/Thule' | 'America/Thunder_Bay' | 'America/Tijuana' | 'America/Toronto' | 'America/Tortola' | 'America/Vancouver' | 'America/Whitehorse' | 'America/Winnipeg' | 'America/Yakutat' | 'America/Yellowknife' | 'Antarctica/Casey' | 'Antarctica/Davis' | 'Antarctica/DumontDUrville' | 'Antarctica/Macquarie' | 'Antarctica/Mawson' | 'Antarctica/McMurdo' | 'Antarctica/Palmer' | 'Antarctica/Rothera' | 'Antarctica/Syowa' | 'Antarctica/Troll' | 'Antarctica/Vostok' | 'Arctic/Longyearbyen' | 'Asia/Aden' | 'Asia/Almaty' | 'Asia/Amman' | 'Asia/Anadyr' | 'Asia/Aqtau' | 'Asia/Aqtobe' | 'Asia/Ashgabat' | 'Asia/Atyrau' | 'Asia/Baghdad' | 'Asia/Bahrain' | 'Asia/Baku' | 'Asia/Bangkok' | 'Asia/Barnaul' | 'Asia/Beirut' | 'Asia/Bishkek' | 'Asia/Brunei' | 'Asia/Chita' | 'Asia/Choibalsan' | 'Asia/Colombo' | 'Asia/Damascus' | 'Asia/Dhaka' | 'Asia/Dili' | 'Asia/Dubai' | 'Asia/Dushanbe' | 'Asia/Famagusta' | 'Asia/Gaza' | 'Asia/Hebron' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Hovd' | 'Asia/Irkutsk' | 'Asia/Istanbul' | 'Asia/Jakarta' | 'Asia/Jayapura' | 'Asia/Jerusalem' | 'Asia/Kabul' | 'Asia/Kamchatka' | 'Asia/Karachi' | 'Asia/Kathmandu' | 'Asia/Khandyga' | 'Asia/Kolkata' | 'Asia/Krasnoyarsk' | 'Asia/Kuala_Lumpur' | 'Asia/Kuching' | 'Asia/Kuwait' | 'Asia/Macau' | 'Asia/Magadan' | 'Asia/Makassar' | 'Asia/Manila' | 'Asia/Muscat' | 'Asia/Nicosia' | 'Asia/Novokuznetsk' | 'Asia/Novosibirsk' | 'Asia/Omsk' | 'Asia/Oral' | 'Asia/Phnom_Penh' | 'Asia/Pontianak' | 'Asia/Pyongyang' | 'Asia/Qatar' | 'Asia/Qostanay' | 'Asia/Qyzylorda' | 'Asia/Rangoon' | 'Asia/Riyadh' | 'Asia/Sakhalin' | 'Asia/Samarkand' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Srednekolymsk' | 'Asia/Taipei' | 'Asia/Tashkent' | 'Asia/Tbilisi' | 'Asia/Tehran' | 'Asia/Thimphu' | 'Asia/Tokyo' | 'Asia/Tomsk' | 'Asia/Ulaanbaatar' | 'Asia/Urumqi' | 'Asia/Ust-Nera' | 'Asia/Vientiane' | 'Asia/Vladivostok' | 'Asia/Yakutsk' | 'Asia/Yangon' | 'Asia/Yekaterinburg' | 'Asia/Yerevan' | 'Atlantic/Azores' | 'Atlantic/Bermuda' | 'Atlantic/Canary' | 'Atlantic/Cape_Verde' | 'Atlantic/Faroe' | 'Atlantic/Madeira' | 'Atlantic/Reykjavik' | 'Atlantic/South_Georgia' | 'Atlantic/St_Helena' | 'Atlantic/Stanley' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Broken_Hill' | 'Australia/Currie' | 'Australia/Darwin' | 'Australia/Eucla' | 'Australia/Hobart' | 'Australia/Lindeman' | 'Australia/Lord_Howe' | 'Australia/Melbourne' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Amsterdam' | 'Europe/Andorra' | 'Europe/Astrakhan' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Bratislava' | 'Europe/Brussels' | 'Europe/Bucharest' | 'Europe/Budapest' | 'Europe/Busingen' | 'Europe/Chisinau' | 'Europe/Copenhagen' | 'Europe/Dublin' | 'Europe/Gibraltar' | 'Europe/Guernsey' | 'Europe/Helsinki' | 'Europe/Isle_of_Man' | 'Europe/Istanbul' | 'Europe/Jersey' | 'Europe/Kaliningrad' | 'Europe/Kiev' | 'Europe/Kirov' | 'Europe/Lisbon' | 'Europe/Ljubljana' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Malta' | 'Europe/Mariehamn' | 'Europe/Minsk' | 'Europe/Monaco' | 'Europe/Moscow' | 'Europe/Nicosia' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Podgorica' | 'Europe/Prague' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Samara' | 'Europe/San_Marino' | 'Europe/Sarajevo' | 'Europe/Saratov' | 'Europe/Simferopol' | 'Europe/Skopje' | 'Europe/Sofia' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Tirane' | 'Europe/Ulyanovsk' | 'Europe/Uzhgorod' | 'Europe/Vaduz' | 'Europe/Vatican' | 'Europe/Vienna' | 'Europe/Vilnius' | 'Europe/Volgograd' | 'Europe/Warsaw' | 'Europe/Zagreb' | 'Europe/Zaporozhye' | 'Europe/Zurich' | 'Indian/Antananarivo' | 'Indian/Chagos' | 'Indian/Christmas' | 'Indian/Cocos' | 'Indian/Comoro' | 'Indian/Kerguelen' | 'Indian/Mahe' | 'Indian/Maldives' | 'Indian/Mauritius' | 'Indian/Mayotte' | 'Indian/Reunion' | 'Pacific/Apia' | 'Pacific/Auckland' | 'Pacific/Bougainville' | 'Pacific/Chatham' | 'Pacific/Chuuk' | 'Pacific/Easter' | 'Pacific/Efate' | 'Pacific/Enderbury' | 'Pacific/Fakaofo' | 'Pacific/Fiji' | 'Pacific/Funafuti' | 'Pacific/Galapagos' | 'Pacific/Gambier' | 'Pacific/Guadalcanal' | 'Pacific/Guam' | 'Pacific/Honolulu' | 'Pacific/Kanton' | 'Pacific/Kiritimati' | 'Pacific/Kosrae' | 'Pacific/Kwajalein' | 'Pacific/Majuro' | 'Pacific/Marquesas' | 'Pacific/Midway' | 'Pacific/Nauru' | 'Pacific/Niue' | 'Pacific/Norfolk' | 'Pacific/Noumea' | 'Pacific/Pago_Pago' | 'Pacific/Palau' | 'Pacific/Pitcairn' | 'Pacific/Pohnpei' | 'Pacific/Port_Moresby' | 'Pacific/Rarotonga' | 'Pacific/Saipan' | 'Pacific/Tahiti' | 'Pacific/Tarawa' | 'Pacific/Tongatapu' | 'Pacific/Wake' | 'Pacific/Wallis',
}

Field options write format

typedef
{
dateFormat:
// Format is optional, but must match name if provided.
| {name: 'local', format?: 'l'}
| {name: 'friendly', format?: 'LL'}
| {name: 'us', format?: 'M/D/YYYY'}
| {name: 'european', format?: 'D/M/YYYY'}
| {name: 'iso', format?: 'YYYY-MM-DD'},
timeFormat:
// Format is optional, but must match name if provided.
| {name: '12hour', format?: 'h:mma'}
| {name: '24hour', format?: 'HH:mm'},
timeZone: 'utc' | 'client' | 'Africa/Abidjan' | 'Africa/Accra' | 'Africa/Addis_Ababa' | 'Africa/Algiers' | 'Africa/Asmara' | 'Africa/Bamako' | 'Africa/Bangui' | 'Africa/Banjul' | 'Africa/Bissau' | 'Africa/Blantyre' | 'Africa/Brazzaville' | 'Africa/Bujumbura' | 'Africa/Cairo' | 'Africa/Casablanca' | 'Africa/Ceuta' | 'Africa/Conakry' | 'Africa/Dakar' | 'Africa/Dar_es_Salaam' | 'Africa/Djibouti' | 'Africa/Douala' | 'Africa/El_Aaiun' | 'Africa/Freetown' | 'Africa/Gaborone' | 'Africa/Harare' | 'Africa/Johannesburg' | 'Africa/Juba' | 'Africa/Kampala' | 'Africa/Khartoum' | 'Africa/Kigali' | 'Africa/Kinshasa' | 'Africa/Lagos' | 'Africa/Libreville' | 'Africa/Lome' | 'Africa/Luanda' | 'Africa/Lubumbashi' | 'Africa/Lusaka' | 'Africa/Malabo' | 'Africa/Maputo' | 'Africa/Maseru' | 'Africa/Mbabane' | 'Africa/Mogadishu' | 'Africa/Monrovia' | 'Africa/Nairobi' | 'Africa/Ndjamena' | 'Africa/Niamey' | 'Africa/Nouakchott' | 'Africa/Ouagadougou' | 'Africa/Porto-Novo' | 'Africa/Sao_Tome' | 'Africa/Tripoli' | 'Africa/Tunis' | 'Africa/Windhoek' | 'America/Adak' | 'America/Anchorage' | 'America/Anguilla' | 'America/Antigua' | 'America/Araguaina' | 'America/Argentina/Buenos_Aires' | 'America/Argentina/Catamarca' | 'America/Argentina/Cordoba' | 'America/Argentina/Jujuy' | 'America/Argentina/La_Rioja' | 'America/Argentina/Mendoza' | 'America/Argentina/Rio_Gallegos' | 'America/Argentina/Salta' | 'America/Argentina/San_Juan' | 'America/Argentina/San_Luis' | 'America/Argentina/Tucuman' | 'America/Argentina/Ushuaia' | 'America/Aruba' | 'America/Asuncion' | 'America/Atikokan' | 'America/Bahia' | 'America/Bahia_Banderas' | 'America/Barbados' | 'America/Belem' | 'America/Belize' | 'America/Blanc-Sablon' | 'America/Boa_Vista' | 'America/Bogota' | 'America/Boise' | 'America/Cambridge_Bay' | 'America/Campo_Grande' | 'America/Cancun' | 'America/Caracas' | 'America/Cayenne' | 'America/Cayman' | 'America/Chicago' | 'America/Chihuahua' | 'America/Costa_Rica' | 'America/Creston' | 'America/Cuiaba' | 'America/Curacao' | 'America/Danmarkshavn' | 'America/Dawson' | 'America/Dawson_Creek' | 'America/Denver' | 'America/Detroit' | 'America/Dominica' | 'America/Edmonton' | 'America/Eirunepe' | 'America/El_Salvador' | 'America/Fort_Nelson' | 'America/Fortaleza' | 'America/Glace_Bay' | 'America/Godthab' | 'America/Goose_Bay' | 'America/Grand_Turk' | 'America/Grenada' | 'America/Guadeloupe' | 'America/Guatemala' | 'America/Guayaquil' | 'America/Guyana' | 'America/Halifax' | 'America/Havana' | 'America/Hermosillo' | 'America/Indiana/Indianapolis' | 'America/Indiana/Knox' | 'America/Indiana/Marengo' | 'America/Indiana/Petersburg' | 'America/Indiana/Tell_City' | 'America/Indiana/Vevay' | 'America/Indiana/Vincennes' | 'America/Indiana/Winamac' | 'America/Inuvik' | 'America/Iqaluit' | 'America/Jamaica' | 'America/Juneau' | 'America/Kentucky/Louisville' | 'America/Kentucky/Monticello' | 'America/Kralendijk' | 'America/La_Paz' | 'America/Lima' | 'America/Los_Angeles' | 'America/Lower_Princes' | 'America/Maceio' | 'America/Managua' | 'America/Manaus' | 'America/Marigot' | 'America/Martinique' | 'America/Matamoros' | 'America/Mazatlan' | 'America/Menominee' | 'America/Merida' | 'America/Metlakatla' | 'America/Mexico_City' | 'America/Miquelon' | 'America/Moncton' | 'America/Monterrey' | 'America/Montevideo' | 'America/Montserrat' | 'America/Nassau' | 'America/New_York' | 'America/Nipigon' | 'America/Nome' | 'America/Noronha' | 'America/North_Dakota/Beulah' | 'America/North_Dakota/Center' | 'America/North_Dakota/New_Salem' | 'America/Nuuk' | 'America/Ojinaga' | 'America/Panama' | 'America/Pangnirtung' | 'America/Paramaribo' | 'America/Phoenix' | 'America/Port-au-Prince' | 'America/Port_of_Spain' | 'America/Porto_Velho' | 'America/Puerto_Rico' | 'America/Punta_Arenas' | 'America/Rainy_River' | 'America/Rankin_Inlet' | 'America/Recife' | 'America/Regina' | 'America/Resolute' | 'America/Rio_Branco' | 'America/Santarem' | 'America/Santiago' | 'America/Santo_Domingo' | 'America/Sao_Paulo' | 'America/Scoresbysund' | 'America/Sitka' | 'America/St_Barthelemy' | 'America/St_Johns' | 'America/St_Kitts' | 'America/St_Lucia' | 'America/St_Thomas' | 'America/St_Vincent' | 'America/Swift_Current' | 'America/Tegucigalpa' | 'America/Thule' | 'America/Thunder_Bay' | 'America/Tijuana' | 'America/Toronto' | 'America/Tortola' | 'America/Vancouver' | 'America/Whitehorse' | 'America/Winnipeg' | 'America/Yakutat' | 'America/Yellowknife' | 'Antarctica/Casey' | 'Antarctica/Davis' | 'Antarctica/DumontDUrville' | 'Antarctica/Macquarie' | 'Antarctica/Mawson' | 'Antarctica/McMurdo' | 'Antarctica/Palmer' | 'Antarctica/Rothera' | 'Antarctica/Syowa' | 'Antarctica/Troll' | 'Antarctica/Vostok' | 'Arctic/Longyearbyen' | 'Asia/Aden' | 'Asia/Almaty' | 'Asia/Amman' | 'Asia/Anadyr' | 'Asia/Aqtau' | 'Asia/Aqtobe' | 'Asia/Ashgabat' | 'Asia/Atyrau' | 'Asia/Baghdad' | 'Asia/Bahrain' | 'Asia/Baku' | 'Asia/Bangkok' | 'Asia/Barnaul' | 'Asia/Beirut' | 'Asia/Bishkek' | 'Asia/Brunei' | 'Asia/Chita' | 'Asia/Choibalsan' | 'Asia/Colombo' | 'Asia/Damascus' | 'Asia/Dhaka' | 'Asia/Dili' | 'Asia/Dubai' | 'Asia/Dushanbe' | 'Asia/Famagusta' | 'Asia/Gaza' | 'Asia/Hebron' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Hovd' | 'Asia/Irkutsk' | 'Asia/Istanbul' | 'Asia/Jakarta' | 'Asia/Jayapura' | 'Asia/Jerusalem' | 'Asia/Kabul' | 'Asia/Kamchatka' | 'Asia/Karachi' | 'Asia/Kathmandu' | 'Asia/Khandyga' | 'Asia/Kolkata' | 'Asia/Krasnoyarsk' | 'Asia/Kuala_Lumpur' | 'Asia/Kuching' | 'Asia/Kuwait' | 'Asia/Macau' | 'Asia/Magadan' | 'Asia/Makassar' | 'Asia/Manila' | 'Asia/Muscat' | 'Asia/Nicosia' | 'Asia/Novokuznetsk' | 'Asia/Novosibirsk' | 'Asia/Omsk' | 'Asia/Oral' | 'Asia/Phnom_Penh' | 'Asia/Pontianak' | 'Asia/Pyongyang' | 'Asia/Qatar' | 'Asia/Qostanay' | 'Asia/Qyzylorda' | 'Asia/Rangoon' | 'Asia/Riyadh' | 'Asia/Sakhalin' | 'Asia/Samarkand' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Srednekolymsk' | 'Asia/Taipei' | 'Asia/Tashkent' | 'Asia/Tbilisi' | 'Asia/Tehran' | 'Asia/Thimphu' | 'Asia/Tokyo' | 'Asia/Tomsk' | 'Asia/Ulaanbaatar' | 'Asia/Urumqi' | 'Asia/Ust-Nera' | 'Asia/Vientiane' | 'Asia/Vladivostok' | 'Asia/Yakutsk' | 'Asia/Yangon' | 'Asia/Yekaterinburg' | 'Asia/Yerevan' | 'Atlantic/Azores' | 'Atlantic/Bermuda' | 'Atlantic/Canary' | 'Atlantic/Cape_Verde' | 'Atlantic/Faroe' | 'Atlantic/Madeira' | 'Atlantic/Reykjavik' | 'Atlantic/South_Georgia' | 'Atlantic/St_Helena' | 'Atlantic/Stanley' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Broken_Hill' | 'Australia/Currie' | 'Australia/Darwin' | 'Australia/Eucla' | 'Australia/Hobart' | 'Australia/Lindeman' | 'Australia/Lord_Howe' | 'Australia/Melbourne' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Amsterdam' | 'Europe/Andorra' | 'Europe/Astrakhan' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Bratislava' | 'Europe/Brussels' | 'Europe/Bucharest' | 'Europe/Budapest' | 'Europe/Busingen' | 'Europe/Chisinau' | 'Europe/Copenhagen' | 'Europe/Dublin' | 'Europe/Gibraltar' | 'Europe/Guernsey' | 'Europe/Helsinki' | 'Europe/Isle_of_Man' | 'Europe/Istanbul' | 'Europe/Jersey' | 'Europe/Kaliningrad' | 'Europe/Kiev' | 'Europe/Kirov' | 'Europe/Lisbon' | 'Europe/Ljubljana' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Malta' | 'Europe/Mariehamn' | 'Europe/Minsk' | 'Europe/Monaco' | 'Europe/Moscow' | 'Europe/Nicosia' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Podgorica' | 'Europe/Prague' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Samara' | 'Europe/San_Marino' | 'Europe/Sarajevo' | 'Europe/Saratov' | 'Europe/Simferopol' | 'Europe/Skopje' | 'Europe/Sofia' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Tirane' | 'Europe/Ulyanovsk' | 'Europe/Uzhgorod' | 'Europe/Vaduz' | 'Europe/Vatican' | 'Europe/Vienna' | 'Europe/Vilnius' | 'Europe/Volgograd' | 'Europe/Warsaw' | 'Europe/Zagreb' | 'Europe/Zaporozhye' | 'Europe/Zurich' | 'Indian/Antananarivo' | 'Indian/Chagos' | 'Indian/Christmas' | 'Indian/Cocos' | 'Indian/Comoro' | 'Indian/Kerguelen' | 'Indian/Mahe' | 'Indian/Maldives' | 'Indian/Mauritius' | 'Indian/Mayotte' | 'Indian/Reunion' | 'Pacific/Apia' | 'Pacific/Auckland' | 'Pacific/Bougainville' | 'Pacific/Chatham' | 'Pacific/Chuuk' | 'Pacific/Easter' | 'Pacific/Efate' | 'Pacific/Enderbury' | 'Pacific/Fakaofo' | 'Pacific/Fiji' | 'Pacific/Funafuti' | 'Pacific/Galapagos' | 'Pacific/Gambier' | 'Pacific/Guadalcanal' | 'Pacific/Guam' | 'Pacific/Honolulu' | 'Pacific/Kanton' | 'Pacific/Kiritimati' | 'Pacific/Kosrae' | 'Pacific/Kwajalein' | 'Pacific/Majuro' | 'Pacific/Marquesas' | 'Pacific/Midway' | 'Pacific/Nauru' | 'Pacific/Niue' | 'Pacific/Norfolk' | 'Pacific/Noumea' | 'Pacific/Pago_Pago' | 'Pacific/Palau' | 'Pacific/Pitcairn' | 'Pacific/Pohnpei' | 'Pacific/Port_Moresby' | 'Pacific/Rarotonga' | 'Pacific/Saipan' | 'Pacific/Tahiti' | 'Pacific/Tarawa' | 'Pacific/Tongatapu' | 'Pacific/Wake' | 'Pacific/Wallis',
}

phoneNumber

A telephone number (e.g. (415) 555-9876).

Cell format

typedef
string

Field options

n/a

multipleAttachments

Attachments allow you to add images, documents, or other files which can then be viewed or downloaded.

When updating an existing attachment cell value, the specified array will overwrite the current cell value. If you want to add a new attachment without deleting the current attachments, you can spread the current cell value like so:

Example
let newAttachmentUrl = 'example.com/cute-cats.jpeg';
myTable.updateRecordAsync(myRecord, {
'myAttachmentField': [
...myRecord.getCellValue('myAttachmentField'),
{ url: newAttachmentUrl }
]
})

Similarly, you can clear the current cell value by passing an empty array, or remove specific attachments by passing a filtered array of the current cell value.

Note: when you pass an existing attachment, you must pass the full attachment object. New attachments only require the url property. You can optionally pass the filename property to give it a readable name.

Attachment URLs returned will expire 2 hours after being returned from our API. If you want to persist the attachments, we recommend downloading them instead of saving the URL. See our support article for more information.

Cell read format

typedef
Array<{
// unique attachment id
id: string,
// url, e.g. "https://v5.airtableusercontent.com/foo"
// Note: Attachment URLs returned will expire 2 hours after being returned from our API.
// If you want to persist the attachments, we recommend downloading them instead of saving the URL.
url: string,
// filename, e.g. "foo.jpg"
filename: string,
// file size, in bytes
size?: number,
// content type, e.g. "image/jpeg"
type?: string,
// thumbnails if available
thumbnails?: {
small?: {
url: string,
width: number,
height: number,
},
large?: {
url: string,
width: number,
height: number,
},
full?: {
url: string,
width: number,
height: number,
},
},
}>

Cell write format

typedef
Array<{
url: string,
filename?: string,
}>

Field options read format

typedef
{
// Whether attachments are rendered in the reverse order from the cell value in the
// Airtable UI (i.e. most recent first)
// You generally do not need to rely on this option.
isReversed: boolean,
}

Field options write format

Options are not required when creating a "multipleAttachments" field, and updating options is not supported

checkbox

A checkbox.

This field is "true" when checked and "null" when unchecked.

Cell read format

typedef
true | null

You can write to the cell with "false", but the read value will be still be "null" (unchecked).

Cell write format

typedef
boolean | null

Field options

typedef
{
// an icon name
icon: 'check' | 'star' | 'heart' | 'thumbsUp' | 'flag' | 'dot',
// the color of the check box
color: 'yellowBright' | 'orangeBright' | 'redBright' | 'pinkBright' | 'purpleBright' | 'blueBright' | 'cyanBright' | 'tealBright' | 'greenBright' | 'grayBright' ,
}

Bases on a free or plus plan are limited to using the 'check' icon and 'greenBright' color.

formula

Compute a value in each record based on other fields in the same record.

Cell read format

Check options.result to know the resulting field type.

typedef
any

Cell write format

This field is read-only.

Field options read format

typedef
{
// false if the formula contains an error
isValid: boolean,
// the other fields in the record that are used in the formula
referencedFieldIds: Array<string>,
// the resulting field type and options returned by the formula
result: {
// the field type of the formula result
type: string,
// that types options
options?: any,
},
}

Field options write format

Creating or updating "formula" fields is not allowed

createdBy

The collaborator who created the record.

Cell read format

typedef
{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}

Cell write format

This field is read-only.

Field options read format

typedef
{
choices: Array<{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}>,
}

Field options write format

Creating or updating "createdBy" fields is not allowed

createdTime

The time the record was created in UTC.

When reading from a "Created time" field, the cell value will always be an ISO 8601 formatted date time

Cell read format

typedef
string

Cell write format

This field is read-only.

Field options read format

typedef
{
result: {
type: 'date' | 'dateTime',
options: DateOrDateTimeFieldOptions,
},
}

See date and dateTime for detailed field options

Field options write format

Creating or updating "createdTime" fields is not supported.

rollup

A rollup allows you to summarize data from records that are linked to this table.

Cell read format

Check options.result to know the resulting field type.

typedef
any

Cell write format

This field is read-only.

Field options read format

typedef
{
// false if the formula contains an error
isValid: boolean,
// the linked record field in this table that this field is
// summarizing.
recordLinkFieldId: string,
// the field id in the linked table that this field is summarizing.
fieldIdInLinkedTable: string,
// the other fields in the record that are used in the formula
referencedFieldIds: Array<string>,
// the resulting field type and options returned by the formula
result: {
// the field type of the formula result
type: string,
// that types options
options?: any,
},
}

Field options write format

Creating or updating "rollup" fields is not allowed

count

Count the number of linked records.

Cell read format

typedef
number

Cell write format

This field is read-only.

Field options read format

typedef
{
// is the field currently valid (e.g. false if the linked record
// field has been changed to a different field type)
isValid: boolean,
// the linked record field in this table that we're counting
recordLinkFieldId: string,
}

Field options write format

Creating or updating "count" fields is not allowed

multipleLookupValues

Lookup a field on linked records.

Cell read format

Check options.result to know the resulting field type.

typedef
Array<any>

Cell write format

This field is read-only.

Field options read format

typedef
{
// The field in the linked table that this field is looking up
fieldIdInLinkedTable: string,
// is the field currently valid (e.g. false if the linked record field has
// been deleted)
isValid: boolean,
// The linked record field in the current table
recordLinkFieldId: string,
result: {
// The type of the field in the linked table
type: string,
// For field options, refer to the section for the relevant field type
options?: object,
},
}

Field options write format

Creating or updating "multipleLookupValues" fields is not allowed

autoNumber

Automatically incremented unique counter for each record.

Cell read format

typedef
number

Cell write format

This field is read-only.

Field options

n/a

barcode

Use the Airtable iOS or Android app to scan barcodes.

Cell format

typedef
{
// the text value of the barcode
text: string,
// the type of barcode
type?: string,
}

Field options

n/a

rating

A rating (e.g. stars out of 5)

Cell format

typedef
number

Field options

typedef
{
// the icon name used to display the rating
icon: 'star' | 'heart' | 'thumbsUp' | 'flag' | 'dot',
// the maximum value for the rating, from 1 to 10 inclusive
max: number,
// the color of selected icons
color: 'yellowBright' | 'orangeBright' | 'redBright' | 'pinkBright' | 'purpleBright' | 'blueBright' | 'cyanBright' | 'tealBright' | 'greenBright' | 'grayBright',
}

Bases on a free or plus plan are limited to using the 'star' icon and 'yellowBright' color.

richText

A long text field with rich formatting enabled.

Returned string is formatted with markdown syntax for Airtable rich text formatting. Use this formatting when updating cell values.

Cell format

typedef
string

Field options

n/a

duration

A duration of time in seconds.

The durationFormat string follows the moment.js structure documented here.

Cell format

typedef
number

Field options

typedef
{
durationFormat: 'h:mm' | 'h:mm:ss' | 'h:mm:ss.S' | 'h:mm:ss.SS' | 'h:mm:ss.SSS'
}

lastModifiedBy

Shows the collaborator who most recently modified any editable field or just in specific editable fields.

Cell read format

typedef
{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}

Cell write format

This field is read-only.

Field options read format

typedef
{
referencedFieldIds: Array<string>,
choices: Array<{
id: string,
email: string,
name?: string,
profilePicUrl?: string,
}>,
}

Field options write format

Creating or updating "lastModifiedBy" fields is not allowed

lastModifiedTime

Shows the date and time that a record was most recently modified in any editable field or just in specific editable fields.

When reading from a "Last modified time" field, the cell value will always be an ISO 8601 formatted date time

Cell read format

typedef
string

Cell write format

This field is read-only.

Field options read format

typedef
{
// false if the formula contains an error
isValid: boolean,
// the fields to check the last modified time of
referencedFieldIds: Array<string>,
// the cell value result type
result: {
type: 'date' | 'dateTime',
options: DateOrDateTimeFieldOptions,
},
}

See date and dateTime for detailed field options

Field options write format

Creating or updating "lastModifiedTime" fields is not supported.

externalSyncSource

Shows the name of the source that a record is synced from. This field is only available on synced tables.

Cell read format

typedef
{
id: string,
name: string,
color?: string,
}

The name of the source the record is synced from.

Cell write format

This field is read-only.

Field options read format

typedef
{
choices: Array<{
id: string,
name: string,
color?: string,
}>,
}

Field options write format

Creating or updating "externalSyncSource" fields is not allowed

Every choice represents a sync source, and choices are added or removed automatically as sync sources are added or removed. Choice names and colors are user-configurable.

Field options write format

Creating or updating "externalSyncSource" fields is not supported.

aiText

Long text (with AI output enabled)

AI generated text can depend on other cells in the same record and can be in a loading state.

Cell read format

typedef
{
state: 'empty' | 'loading' | 'generated' | 'error',
value: string,
isStale: boolean,
// Only populated if state is 'error'
errorType?: string,
}

Cell write format

This field is read-only.

Field options read format

typedef
{
prompt?: Array<string | {field: {fieldId: string}}>,
referencedFieldIds?: Array<string>,
}

Field options write format

Creating or updating "aiText" fields is not allowed

button

A button that can be clicked from the Airtable UI to open a URL or open an extension.

You cannot currently programmatically interact with a button field from a script, but you can use your scripting extension with the "Run script" button field action. The first input.recordAsync call in your script will be skipped, and the button's record returned.

You can use the Record picker example as a starting point for a button field script.

Cell read format

typedef
{
// The label of the button
label: string,
// URL the button opens, or URL of the extension that the button opens.
// Null when the URL formula has become invalid.
url: string | null,
}

Cell write format

This field is read-only.

Field options

n/a