Using
- Click the "Extensions" tab
- Add the "Scripting" extension
- Copy pasta the above, and hit 'Run'
- Mind the "Create" option — if you select this, it will add ~60 fields to your table
// Ask for an ObjectID | |
let objectID = await input.textAsync("Input an Object ID") | |
// get result from objectID | |
let apiURL = "https://collectionapi.metmuseum.org/public/collection/v1/objects/" + objectID | |
let results = await fetch(apiURL) | |
let json = await results.json() | |
if (json.hasOwnProperty("message")){ | |
output.text("Error fetching: "+json.message) | |
} else { | |
// Edit this to the name of a table in your base | |
let table = await input.tableAsync("Select a table") | |
let createFields = await input.buttonsAsync( | |
`Create fields, or just populate existing?`, | |
[{label: 'Create', variant: 'primary'}, 'Populate existing'] | |
) | |
let newRecord = { | |
fields: { | |
} | |
} | |
// Create fields from API — will include EVERYTHING | |
if ( createFields == "Create" ){ | |
for (let key in json){ | |
if (json.hasOwnProperty(key)){ | |
let found = table.fields.find((el) => (el.name.toLowerCase() == key.toLowerCase())) | |
if (found == undefined){ | |
try { | |
await table.createFieldAsync(key, "singleLineText") | |
output.text("Created field "+key) | |
} catch (e){ | |
output.text("Error creating "+e) | |
} | |
} else { | |
output.text("Field exists: "+key) | |
} | |
} | |
} | |
} | |
// Populate fields that exist (i.e. already there, or created above, or both!) | |
table.fields.forEach((field) => { | |
if (json.hasOwnProperty(field.name)){ | |
newRecord.fields[field.name] = (json[field.name].toString()) | |
output.text("Populate "+field.name) | |
} else { | |
// output.text("Nope. "+field.name) | |
} | |
}) | |
// Insert into table | |
await table.createRecordAsync(newRecord.fields); | |
} | |