That's what I do. Assuming a Mail Merge is a templated message with some substitutions.
I populate a queue in SQL of the values for each message, the teacher, student, and course. The message is standard with interpolation, and each message is sent from the teacher to the student, customized, with a context_code for the course. I logged the conversation_id to the queue after success, and can tie these back to Canvas Data after refresh, tracking comments, and removing students who opt out.
I was thinking this would be similar in CSV (from Excel) if she wants to send each student in the sheet a standardized message, with a few columns of personally relevant values. The script would read an exported CSV and iterate, sending one conversation request to the API for each row.
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.