What we have done is given below. Though this is not perfect, but it works. This implementaion does not require any change in the core frappe code.
I call the disable_prepared_report_being_checked() before return columns, data statment in the script_report.py file.
def disable_prepared_report_being_checked(report_name):
"""
Uncheck the prepared_report checkbox and remove `Prepared Report` entity (if any)
"""
frappe.db.set_value('Report', report_name, 'prepared_report', 0)
# frappe.db.delete('Prepared Report') # Truncates the entire table
frappe.db.delete('Prepared Report', {'report_name': report_name})
frappe.db.commit()
This code unchecks the Prepared Report check box everytime it executes and deletes the prepared report entity from Prepared Report table (if any).