This process will help you create the "BAT-AddStudentsToClasses.csv" file for use in the Assign Students to Google Classroom Classes task.
Firstly you will require a data export from SIMS (or other MIS that your school uses) with the following information.
Please see the example below:
You'll now need to convert your UPN IDs to your G Suite IDs, edit the sheet 'GSuiteIDfromUPN' on the Excel file.
Make a copy of the 'ImportFromSIMS' sheet and call it 'SheetToConvert'
Now that you have a sheet that lists your G Suite users and their Unique Pupil Number (UPN) you can go ahead and write the vlookup on the 'SheetToConvert' sheet.
Use the formula below in cell 'A2' and then fill down to the end of your data:
=VLOOKUP(ImportFromSIMS!A2,GSuiteIDfromUPN!A:B,2,0)
If you don't already have the Developer tab available in Excel, go to:
File > Options > Customize Ribbon
Tick the 'Developer' tick box under 'Customize the Ribbon' and click 'Ok'.
Now you can run the Macro called 'Convert'.
Once the Macro has finished running you will be presented with a new sheet called 'KidsClasses'. You can now copy these columns of data into your "BAT-AddStudentsToClasses.csv"
*(making sure to place the UserIDs and Class Codes in the correct columns!)*
Option Explicit
Public Sub Convert()
Const FC As Long = 1 'first col (ID)
Const FR As Long = 2 'first row
Const NEXT_COL As Long = FC + 1
Const DB_WS_NAME As String = "KidsClasses"
Dim ws As Worksheet, db As Worksheet, lr As Long, lc As Long, maxRow As Long
Dim arr1 As Variant, arr2 As Variant, i As Long, j As Long, k As Long
Set ws = Worksheets("SheetToConvert") 'main sheet -----------------------------------------
lr = ws.Cells(ws.UsedRange.Rows.Count + 1, FC).End(xlUp).Row
lc = ws.UsedRange.Columns.Count
If lr >= FR Then
maxRow = (lr - (FR - 1)) * (lc - FC) + FR 'set result area
Application.ScreenUpdating = False: Application.DisplayAlerts = False
For Each db In Worksheets
If db.Name = DB_WS_NAME Then
db.Delete: Exit For
End If
Next
Set db = Worksheets.Add(After:=ws): db.Name = DB_WS_NAME
arr1 = ws.Range(ws.Cells(FR, FC), ws.Cells(lr, lc)).Value2
arr2 = db.Range(db.Cells(FR, FC), db.Cells(maxRow, NEXT_COL)).Value2
k = FR - 1
For i = FR - 1 To lr - (FR - 1) 'all rows
For j = NEXT_COL To lc 'all cols
If Len(arr1(i, j)) = 0 Then Exit For 'exit inner For (this row is done)
arr2(k, FC) = arr1(i, FC)
arr2(k, NEXT_COL) = arr1(i, j)
k = k + 1
Next
Next
db.Range(db.Cells(FR, FC), db.Cells(maxRow, NEXT_COL)).Value2 = arr2
Application.DisplayAlerts = True: Application.ScreenUpdating = True
End If
End Sub