Mar 06, 2020 10:19 AM
I have a decently large data set, and I am trying to mine from it information to see what has value. On that I am trying to create a new sheet that has a list of keywords. I would like to then have a column next to each keyword that displays how many times that word appears in my main sheet (or a single column).
I have seen several topics that cover something similar but nothing that seems to fit the bill.
Can anyone help? Thanks!
Mar 06, 2020 03:20 PM
Not so fast - I haven’t actually solved this riddle yet. :winking_face:
Is this sort’a what you’re looking for?
Mar 09, 2020 01:01 PM
Sorry about the delay, the notifier email went to my spam folder. That is exactly what I am looking for!!!
Mar 09, 2020 02:30 PM
Okay - good to hear!
Share with me (in a direct message) your Airtable account email address and I’ll share the Base to you to examine the analytics. Once you confirm this is what your goal is, I’ll drop the script block to you, install it into the base and add more content and keywords to further test.
Mar 10, 2020 06:17 AM
That’s better then what I was looking for!
Sep 18, 2020 06:21 AM
Hey,
This is amazing and exaclty the stort of thing that I’m trying to do. Is there any way that you would be able to share it with me please?
Thanks
Oct 06, 2020 12:30 PM
This is also the exact solution I am looking for…Any chance of getting a copy of the script block?
Oct 18, 2020 09:57 AM
I’d like to know too if this is available and where.
Oct 18, 2020 10:07 AM
@Kay_Aleksic, @Michael_Tranchina - here’s the script.
/*
***********************************************************
ScriptBloqs - Datamining Text
Copyright (c) 2020 by Global Technologies Corporation
ALL RIGHTS RESERVED
***********************************************************
*/
//
// get the table names and records
//
output.markdown('# Data Mining');
output.markdown('## Updating Metrics...');
// Load all of the terms records in the keywords and phrases table
let termsTable = base.getTable("Keywords & Phrases");
let queryResults = await termsTable.selectRecordsAsync();
let oTermsRecords = queryResults.records;
// Load all of the content records in the table
let contentTable = base.getTable("Content");
queryResults = await contentTable.selectRecordsAsync();
let oContentRecords = queryResults.records;
// process the terms list
let oSourceGrid = {};
let oResultsGrid = {};
let i = 0;
for (let record of oTermsRecords)
{
var thisTerm = record.getCellValue("Key Terms").toString().toLowerCase();
// output.inspect(thisTerm);
let summaryCount = 0;
let contentCount = 0;
let inBothCount = 0;
let aSerialNumbers = [];
for (let record of oContentRecords)
{
var thisSerialNumber = record.getCellValue("Serial #");
var thisSummary = record.getCellValue("Summary");
var thisContent = record.getCellValue("Content");
var inSummary = (thisSummary.toString().toLowerCase().indexOf(thisTerm) > -1) ? true : false;
var inContent = (thisContent.toString().toLowerCase().indexOf(thisTerm) > -1) ? true : false;
if (inSummary)
summaryCount ++;
if (inContent)
contentCount ++;
if ((inSummary) && (inContent))
inBothCount ++;
if ((inSummary) || (inContent))
aSerialNumbers.push(thisSerialNumber);
oSourceGrid[thisSerialNumber] = {
"Summary" : thisSummary,
"Content" : thisContent
}
}
oResultsGrid[i] = {
"Key Term" : thisTerm,
"In Both Count" : inBothCount,
"Summary Count" : summaryCount,
"Content Count" : contentCount,
"Serial Numbers" : aSerialNumbers.toString()
}
output.text("Creating entry for " + thisTerm + "!");
await termsTable.updateRecordAsync(record.id, {
"In Both Count" : inBothCount,
"Summary Count" : summaryCount,
"Content Count" : contentCount,
"Serial Numbers" : aSerialNumbers.toString()
})
i ++;
}
output.clear();
output.markdown('# Data Mining');
output.markdown('## Metrics Updated');
output.markdown('### Content');
output.table(oSourceGrid);
output.markdown('### Metrics');
output.table(oResultsGrid);
Dec 11, 2020 01:19 AM
This is so great. Would you mind sharing the link to your base with me?
Dec 11, 2020 05:52 AM
Glad you like it.
Yes, actually I would because the code example was based on a client’s data. And I wish I had lots of idle time to create another data example, but I’m swamped with client projects that will lead to sharing other script examples. :winking_face: