def unschedule_apex(un, pw, token): client = ApexClient() client.login(un, pw, token, is_production=False) scheduled_jobs = [] cjds = client.query('SELECT Id,Name,JobType FROM CronJobDetail WHERE JobType = \'7\'') try: cjd_ids = [] cjd_names = {} for cjd in cjds.records: cjd_ids.append(cjd.Id[0]) cjd_names[cjd.Id[0]] = cjd.Name scheduled_jobs = [] #TODO:make a array to string for soql utility cjd_ids_filter = array_to_soql_string(cjd_ids) print cjd_ids_filter cts = client.query("SELECT CronExpression,CronJobDetailId,Id FROM CronTrigger WHERE CronJobDetailId IN %s" % cjd_ids_filter) for ct in cts.records: scheduled_jobs.append(ScheduledJob(cjd_names.get(ct.CronJobDetailId[0]), ct.CronExpression[0], ct.Id[0])) apex_str = "system.abortjob('%s'); \n" exec_str = '' #TODO: refactor to single api exec anon call for sj in scheduled_jobs: exec_str = exec_str + apex_str % sj.id client.execute_anonymous(exec_str) finally: return scheduled_jobs