You could use Powershell to determine what users should be archived.
Example:
$CSVLocation = "c:\a place to put this file\examplereport.csv
gam print users allfields | Out-File $CSVLocation -encoding ascii
$ArchiveCheck = import-csv $CSVLocation | Where-Object {$_.orgUnitpath -eq '/Terminated Staff/Archive' -and $_.archived -eq 'FALSE'}
foreach ($user in $ArchiveCheck) {
gam update user $($user.primaryEmail) suspended on archived on
}
I have a similar script scheduled to run every morning to archive users.