# Fields: Virtual & Formula

> Part of the NocoDB documentation (Workflows > Scripts > Examples > Generic). Index of all pages: https://nocodb.com/llms.txt. Any docs page is available as Markdown by adding `.md` to its URL.

URL: https://nocodb.com/docs/workflows/scripts/examples/demo/field-virtual
Last updated: 2026-10-03

A NocoDB script that adds calculated or derived data with virtual fields.

This script shows how to create and use these virtual fields in NocoDB:
`Barcode`, `Formula`

For details on each field type and its configuration options, refer to the [NocoDB meta API documentation](https://nocodb.com/apis/v3/meta#tag/Fields).

```javascript
// NocoDB Script: Create Virtual & Formula Fields

const tableName = 'Virtual Fields Demo';
let table = base.getTable(tableName);

if (!table) {
  table = await base.createTableAsync(tableName, []);
  output.text(`✅ Created table: "${tableName}"`);
}

// helper
async function createField(name, config) {
  if (!table.getField(name)) {
    await table.createFieldAsync({ name, ...config });
    output.text(`✅ Created: ${name}`);
  }
}

// Base text field required for virtual examples
await createField('Name', { type: "SingleLineText" });

// Create Barcode linked to “Name”
const nameField = table.getField('Name');
await createField('Barcode', {
  type: "Barcode",
  options: { barcode_value_field_id: nameField.id }
});

// Formula combining text
await createField('Greeting', {
  type: "Formula",
  options: { formula: 'CONCAT("Hello, ", {Name}, "!")' }
});

output.table(table.fields.map(f => ({ 'Field Name': f.name, 'Type': f.type })));
output.text(`ℹ️ Total fields created: ${table.fields.length}`);
```

---

## Related pages

- [Table Operations](https://nocodb.com/docs/workflows/scripts/examples/demo/table-operations.md): A NocoDB script that checks if a table exists, creates a table and lists all tables in the base.
- [Fields: Text-Based](https://nocodb.com/docs/workflows/scripts/examples/demo/field-text-based.md): A NocoDB script that creates and manages text-based fields.
- [Fields: Numerical](https://nocodb.com/docs/workflows/scripts/examples/demo/field-number-based.md): A NocoDB script that creates numerical fields for quantities, percentages, currency and more.
- [Fields: Date & Time](https://nocodb.com/docs/workflows/scripts/examples/demo/field-date-time.md): A NocoDB script that creates Date, Time, DateTime and Duration fields.
- [Fields: Select](https://nocodb.com/docs/workflows/scripts/examples/demo/field-select-based.md): A NocoDB script that creates single select and multi select fields to categorize data.
- [Fields: System](https://nocodb.com/docs/workflows/scripts/examples/demo/field-system.md): A NocoDB script that creates system fields to capture audit information automatically.
- [Fields: User & Collaborator](https://nocodb.com/docs/workflows/scripts/examples/demo/field-user.md): A NocoDB script that creates a User field to assign or reference users in records.
- [Fields: Miscellaneous](https://nocodb.com/docs/workflows/scripts/examples/demo/field-miscellaneous.md): A NocoDB script that creates fields for attachments, checkboxes, ratings and structured data.
