Re: URL to Attachment

5763 1
Showing results for 
Search instead for 
Did you mean: 
5 - Automation Enthusiast
5 - Automation Enthusiast

I have registration forms that collect a digital signature. It imports into airtable as a url, like this: (

Can someone help me with a script that would convert this to an image attachment?

48 Replies 48

Please paste the code here, it’s hard to tell from the screenshot.


@Kasra What do you think?

On line 12, it should be:

// If this record already has an attachment, skip it.
if (url === null || attachments !== null) {

// Otherwise, attach the image at the URL.

Looks like the “continue; }” part got dropped when you updated the script.

Works Great!!!
Thank you so much @Kasra!

5 - Automation Enthusiast
5 - Automation Enthusiast

Just want to thank you, @Stephen_Suen and @Kasra. I’m new to javascript and have been struggling to figure this out (attempting to adapt half a dozen diff. scripts in the process).

This has solved a huge use case for me: I’m using AirTable to manage metadata for my late father’s design archives, and have been struggling with how to display image thumbnails with each record (without having to manually attach them). This script allows me to host my images on my server and pull the URL into the attachments field to display the image.

It does feel a bit redundant (since AT is now also hosting the attached image on its back-end, I assume), but it certainly solves my dilemma. I so appreciate you both sharing this code.


It’s great to see you are becoming a scripter; the agility and opportunities to advance all data management activities will skyrocket as your scripting proficiency rises.

If you want to eliminate a bit of the redundancy and server hosting, simply create a Google Drive folder where you curate your dad’s content and set it to share to anyone with link. Then use those links to upload attachments into Airtable. This makes it far easier to organize and curate the content without exposing it to the open web where it will be indexed and broadcast to the world. It’s also far easier to upload documents into Drive than over FTP or whatever. Removing documents from the folder (should that be desired) is also easier.

Hi Stephen,

was going to asking help about this when luckily run into this solution.

I’d like to copy url from “turl” into “Preview” in this table

changed the script as such:
let submissionsTable = base.getTable(Video’);
let urlField = submissionsTable.getField(‘turl’);
let attachmentField = submissionsTable.getField(Preview’);

let submissionsQuery = await submissionsTable.selectRecordsAsync();
let updates = ;
for (let record of submissionsQuery.records) {
let url = record.getCellValue(urlField);
let attachments = record.getCellValue(attachmentField);

// If this record already has an attachment, skip it.
if (attachments !== null) {

// Otherwise, attach the image at the URL.
    fields: {
        []: [{url: url}]


// Update records in batches of 50.
while (updates.length > 0) {
await submissionsTable.updateRecordsAsync(updates.slice(0, 50));
updates = updates.slice(50);

and get the following error message

SyntaxError: Invalid or unexpected token
on line 1
at s on line 1
at Generator._invoke on line 1
at Generator.forEach.e.(anonymous function) [as next] on line 1
at e on line 1
at l on line 1
on line 1
on line 1

could you please help me out?

Hi @Paolo_Perrone:

Lines 1 and 3 of your script are missing the single quote before the name of the table and field:

let submissionsTable = base.getTable('Video');


let attachmentField = submissionsTable.getField('Preview');

Adding those single quotes back should fix the error you’re seeing.