I don't have time to look into this right now as I'm backlogged in my own work, so I'll just throw some things out there.
The UrlFetchApp will support POST, as long as you put in a method and payload property. It also supports PUT and Canvas normally uses a PUT when you're updating something and POST when you're creating something. You would need something like (myPayload is whatever you called your parameter structure)
{
"method" : "put",
"payload" : myPayload
}
However, if you're using my script, it facilitates that by allowing you to just copy/paste the information from the Canvas REST API. Here's an example from mine. The item is an object that contains course_id and id properties. Anything else is sent through as a parameter. You would need a object called "discussion" that had the parameters.
result = canvasAPI('PUT /api/v1/courses/:course_id/assignments/:id', item);
When editing a script, you can go to the View and choose Execution Script. That probably won't show you all of the parameters that were sent, but it will let you know that the call is getting made. It shows up something like this (I've split the one item onto multiple lines to help with readability.
[17-11-12 17:32:57:496 PST] PropertiesService.getUserProperties() [0 seconds]
[17-11-12 17:32:57:501 PST] Properties.getProperties() [0.004 seconds]
[17-11-12 17:32:58:241 PST] UrlFetchApp.fetch(
[https://richland.instructure.com/api/v1/courses/2206220/assignments/15624983,
{headers={Authorization=Bearer <removed>}, method=put, payload={assignment[due_at=}}]...)
[0.738 seconds]
[17-11-12 17:32:58:241 PST] HTTPResponse.getResponseCode() [0 seconds]
[17-11-12 17:32:58:241 PST] HTTPResponse.getAllHeaders() [0 seconds]
[17-11-12 17:32:58:241 PST] HTTPResponse.getContentText() [0 seconds]
[17-11-12 17:32:58:299 PST] Execution succeeded [6.217 seconds total runtime]
There is a debug mode in the script editor. You can set a breakpoint and run it to a certain spot and look at the information that it has gathered. You can also use Logger.log() statements and then go into the View > Logs after running it to look at the output. The objects don't come out as nicely as in debug mode, but you can copy/paste it into a JSON formatter and clean it up if needed.
Finally, make sure that what you think you're trying to send actually works outside of Google Scripts. You can use the Live API (tack /doc/api/live onto the end of your Canvas Instance base URL) or a REST client like Postman or Advanced Rest Client (ARC).