Skip to main content
Solved

Junction records automation

  • May 1, 2021
  • 1 reply
  • 15 views

Jim_Bain
Forum|alt.badge.img+7

I need help writing the following script:

Tables:

  • Classes
  • Students
  • Grades (junction table)

Each time an Enrollment form creates a new record in the Classes table, the script creates a record for each Student in the Grades table. Grades table is a junction table linking Classes and Students tables.

I know there are several community scripts regarding junction tables but I need one that works from just one Class record at a time.

Best answer by Jim_Bain

I finally figured it out:

//Generate Grade record for each Student registered in user-selected Class
let classesT = base.getTable('Class');
let eachClass = await input.recordAsync ('Select the Class', classesT);
let gradesT = base.getTable('Grades'); 

// for each student in the students array
for (let student of eachClass.getCellValue('Students')) {
    // create a grade record
    await gradesT.createRecordAsync({
        'Class': [{id: eachClass.id}],
        'Student': [{id: student.id}]
    })
}

1 reply

Jim_Bain
Forum|alt.badge.img+7
  • Author
  • New Participant
  • 1 reply
  • Answer
  • May 3, 2021

I finally figured it out:

//Generate Grade record for each Student registered in user-selected Class
let classesT = base.getTable('Class');
let eachClass = await input.recordAsync ('Select the Class', classesT);
let gradesT = base.getTable('Grades'); 

// for each student in the students array
for (let student of eachClass.getCellValue('Students')) {
    // create a grade record
    await gradesT.createRecordAsync({
        'Class': [{id: eachClass.id}],
        'Student': [{id: student.id}]
    })
}