
## Cell values & field options

### singleLineText

A single line of text.

**Cell format**

```js
string
```


**Field options**

n/a

### email

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

**Cell format**

```js
string
```


**Field options**

n/a

### url

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

**Cell format**

```js
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**

```js
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**

```js
number
```


**Field options**

```js
{
    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**

```js
number
```


**Field options**

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


### currency

An amount of a currency.

**Cell format**

```js
number
```


**Field options**

```js
{
    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**

```js
{
    id: string,
    name: string,
    color?: string,
}
```

**Cell write format**

```js
{ id: string } | { name: string }
```


**Field options read format**

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

**Field options write format**

```js
{
    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:

```js
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.

```js
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**

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

The currently selected choices.

**Cell write format**

```js
Array<{id: string} | {name: string}>
```


**Field options read format**

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

**Field options write format**

```js
{
    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:

```js
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.

```js
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](/developers/scripting/api/collaborator.md).

**Cell read format**

```js
{
    id: string,
    email: string,
    name?: string,
    profilePicUrl?: string,
}
```

The currently selected user collaborator.

**Cell write format**

```js
{
    id: string,
}
```


**Field options read format**

```js
{
    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](/developers/scripting/api/collaborator.md).

**Cell read format**

```js
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**

```js
Array<{ id: string }>
```


**Field options read format**

```js
{
    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:

```js
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**

```js
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**

```js
Array<{ id: string }>
```


**Field options read format**

```js
{
    // 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**

```js
{
    // 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](https://www.iso.org/iso-8601-date-and-time-format.html) formatted date.

The date format string follows the moment.js structure documented
[here](https://momentjs.com/docs/#/parsing/string-format/)

**Cell read format**

```js
string
```

**Cell write format**

```js
Date | string
```


**Field options read format**

```js
{
    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**

```js
{
    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](https://www.iso.org/iso-8601-date-and-time-format.html) formatted date time.

The date and time format strings follow the moment.js structure documented
[here](https://momentjs.com/docs/#/parsing/string-format/)

**Cell read format**

```js
string
```

**Cell write format**

```js
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**

```js
{
    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**

```js
{
    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**

```js
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:

```js
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](https://support.airtable.com/docs/airtable-attachment-url-behavior) for more information.

**Cell read format**

```js
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**

```js
Array<{
    url: string,
    filename?: string,
}>
```


**Field options read format**

```js
{
    // 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**

```js
true | null
```

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

**Cell write format**

```js
boolean | null
```


**Field options**

```js
{
    // 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.

```js
any
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    // 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**

```js
{
    id: string,
    email: string,
    name?: string,
    profilePicUrl?: string,
}
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    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](https://www.iso.org/iso-8601-date-and-time-format.html) formatted date time

**Cell read format**

```js
string
```

**Cell write format**

This field is read-only.

**Field options read format**

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

See [date](/developers/scripting/api/cell_values.md#date) and [dateTime](/developers/scripting/api/cell_values.md#date-time) 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.

```js
any
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    // 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**

```js
number
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    // 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.

```js
Array<any>
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    // 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**

```js
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**

```js
{
    // 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**

```js
number
```


**Field options**

```js
{
    // 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](https://support.airtable.com/docs/using-markdown-in-airtable). Use this formatting when updating cell values.

**Cell format**

```js
string
```


**Field options**

n/a

### duration

A duration of time in seconds.

The `durationFormat` string follows the moment.js structure documented
[here](https://momentjs.com/docs/#/parsing/string-format/).

**Cell format**

```js
number
```


**Field options**

```js
{
    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**

```js
{
    id: string,
    email: string,
    name?: string,
    profilePicUrl?: string,
}
```

**Cell write format**

This field is read-only.


**Field options read format**

```js
{
    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](https://www.iso.org/iso-8601-date-and-time-format.html) formatted date time

**Cell read format**

```js
string
```

**Cell write format**

This field is read-only.

**Field options read format**

```js
{
    // 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](/developers/scripting/api/cell_values.md#date) and [dateTime](/developers/scripting/api/cell_values.md#date-time) 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**

```js
{
    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**

```js
{
    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**

```js
{
    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**

```js
{
    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](/developers/scripting/examples/recordpicker.md) as a starting point for a button field script.

**Cell read format**

```js
{
    // 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
