Scheduled workflows use a saved search which is evaluated by NetSuite's workflow scheduler every 30 minutes. Thus, if a record meets the criteria of the saved search and enters the workflow, the workflow actions will get executed as well every 30 minutes. This will result into an unnecessary execution of actions or worse, email spamming in the case of the Send Email action.
The recommended approach for this is to create a custom checkbox field that will serve as the indicator if the email is already sent, then apply it to the record type in the workflow.
After that, this custom checkbox field must be a part of the criteria of the saved search.
The final step is to add a Set Field Value action to the workflow which sets the custom checkbox field into checked.