well i found a way to construct a URL that exports the report csv. it includes some pretty funky ID (reportTable.oContentProvider.sExecutionId) that i'm GUESSING isn't persistent. i'm guessing the attachment processing is gonna be the most reliable method.