Apr 25, 2024 10:51 PM
The following bit of code is intended for a Script block to pull data into airtable it was written by chatgpt
I cant make this work for the life of me
async function updateRDAPData() {
let table = base.getTable('Wucy'); // Correct table name
let query = await table.selectRecordsAsync({
fields: ['Value'] // This field contains the full RDAP URLs
});
for (const record of query.records) {
let url = record.getCellValue('Value'); // Get the RDAP URL from the record
if (!url) {
console.log(`Skipping record ${record.id} because no URL is present.`);
continue;
}
console.log(`Fetching RDAP data from URL: ${url}`);
try {
let response = await fetch(url);
if (!response.ok) {
console.error(`HTTP Error: Failed to fetch RDAP data from URL ${url}: ${response.status} ${response.statusText}`);
continue;
}
let data = await response.json();
// Extract necessary details from RDAP response
let networkHandle = data.handle || "No network handle found";
let networkName = data.name || "No network name found";
let entityDetails = (data.entities && data.entities.length > 0) ?
data.entities.map(entity => `Handle: ${entity.handle}, Roles: ${entity.roles.join(', ')}`).join('\n') :
"No entities found";
// Update Airtable records with the extracted data
await table.updateRecordAsync(record.id, {
'Network Handle': networkHandle, // Make sure these field names are correct
'Name': networkName, // and exist in your table
'Entity Details': entityDetails // Create this field if you need to store entity information
});
} catch (error) {
console.error(`Error processing URL ${url} for record ${record.id}:`, error);
}
}
console.log('RDAP data update completed.');
}
updateRDAPData();
Apr 26, 2024 09:01 AM - edited Apr 26, 2024 09:02 AM
If this is running in a script extension block, then fetch will not work, try to use remoteFetchAsync. Because Scripting App scripts run directly in the user’s browser, fetch requests will be blocked by the browser if the target server doesn’t support Cross-Origin Resource Sharing (CORS).
async function updateRDAPData() {
let table = base.getTable('Wucy'); // Correct table name
let query = await table.selectRecordsAsync({
fields: ['Value'] // This field contains the full RDAP URLs
});
for (const record of query.records) {
let url = record.getCellValue('Value'); // Get the RDAP URL from the record
if (!url) {
console.log(`Skipping record ${record.id} because no URL is present.`);
continue;
}
console.log(`Fetching RDAP data from URL: ${url}`);
try {
let response = await remoteFetchAsync(url); // change from fetch to remoteFetchAsync
if (!response.ok) {
console.error(`HTTP Error: Failed to fetch RDAP data from URL ${url}: ${response.status} ${response.statusText}`);
continue;
}
let data = await response.json();
// Extract necessary details from RDAP response
let networkHandle = data.handle || "No network handle found";
let networkName = data.name || "No network name found";
let entityDetails = (data.entities && data.entities.length > 0) ?
data.entities.map(entity => `Handle: ${entity.handle}, Roles: ${entity.roles.join(', ')}`).join('\n') :
"No entities found";
// Update Airtable records with the extracted data
await table.updateRecordAsync(record.id, {
'Network Handle': networkHandle, // Make sure these field names are correct
'Name': networkName, // and exist in your table
'Entity Details': entityDetails // Create this field if you need to store entity information
});
} catch (error) {
console.error(`Error processing URL ${url} for record ${record.id}:`, error);
}
}
console.log('RDAP data update completed.');
}
updateRDAPData();
If it is running inside an automation script block, then error might be something else.
I hope this helps! If you need assistance implementing this solution, feel free to schedule a free call with me.
- Juan, Code and No-Code Solutions Expert
Apr 26, 2024 11:50 AM
thanks for the reply ill look into this