Smartsheet API Add attachment to Sheet using Powershell

I am building a Powershell module. Yes I know there is the C# SDK but I do not want that as a dependency for this Module.

I am struggling with this API Call:

Attach File or URL to Sheet

This is my code:

$BaseURI = "https://api.smartsheet.com/2.0"

$Id = {smartsheet id}

$filename = "MyDoc.docx"

mimetype美元= "应用程序/msword"

$Uri = "{0}/sheets/{1}/attachments" -f $baseUri, $id

$AuthCode = "{my auth code}"

$token = ConvertTo-SecureString -String $AuthCode -AsPlainText -Force

$response = Invoke-RestMethod - Method POST -Uri $Uri -Infile $filename -ContentType $mimetype -Authentication:Bearer -Token $Token

The response I get back from the API is:

{ "errorCode" : 1008, "message" : "Unable to parse request. The following error occurred: Request body must be either a JSON object or JSON array.", "refId" : "12y60zzovzndm" }

For sending a file this should work.

If I post to this API Call in Postman it works.

Answers

  • OK, got this to work.

    Thanks to Postman's code example I did the following.

    Created the headers as a hash table:

    Name Value

    ---- -----

    Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document

    Authorization Bearer VcjJj....

    Content-Disposition attachment; filename="CWilliams.docx"

    Notice I did not include Content-Length

    read the input file into a byte array.

    $body = [System.IO.File]::ReadAllBytes($path)

    then issue the RestMethod call:

    $response = Invoke-RestMethod -Method 'POST' -Uri $Uri -Headers $Headers -Body $body

    This works. But according to the PowerShell docs we should not have to do it this way. The -InFile parameter should handle all the header setup and properly formulate the request.

Hi @Matthew Drake<\/a> <\/p>

There currently isn't a way to overlay an Outlook Calendar on top of a Smartsheet Calendar; you can do the reverse, publish dates from Smartsheet into Outlook.<\/a><\/p>

Please provide your feedback to the Product team through this form, here.<\/a><\/p>

Thanks,<\/p>

Genevieve<\/p>"}]}},"status":{"statusID":3,"name":"Accepted","state":"closed","recordType":"discussion","recordSubType":"question"},"bookmarked":false,"unread":false,"category":{"categoryID":343,"name":"Add Ons and Integrations","url":"https:\/\/community.smartsheet.com\/categories\/apps-and-integrations","allowedDiscussionTypes":["discussion","question"]},"reactions":[{"tagID":3,"urlcode":"Promote","name":"Promote","class":"Positive","hasReacted":false,"reactionValue":5,"count":0},{"tagID":5,"urlcode":"Insightful","name":"Insightful","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":11,"urlcode":"Up","name":"Vote Up","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":13,"urlcode":"Awesome","name":"Awesome","class":"Positive","hasReacted":false,"reactionValue":1,"count":0}],"tags":[]},{"discussionID":91824,"type":"question","name":"Dynamic View - Dropdown Lists","excerpt":"I have certain single and multiple select list columns that do not have the \"restrict to dropdown values only\" checked on the source sheet but in Dynamic View we are unable to add in our own values if they don't exist in the dropdown. This has been extremely frustrating especially when trying to capture new values and…","snippet":"I have certain single and multiple select list columns that do not have the \"restrict to dropdown values only\" checked on the source sheet but in Dynamic View we are unable to add…","categoryID":343,"dateInserted":"2022-06-06T17:24:20+00:00","dateUpdated":"2022-06-14T14:39:36+00:00","dateLastComment":"2023-08-25T19:03:11+00:00","insertUserID":113932,"insertUser":{"userID":113932,"name":"Emmy Anderson","url":"https:\/\/community.smartsheet.com\/profile\/Emmy%20Anderson","photoUrl":"https:\/\/aws.smartsheet.com\/storageProxy\/image\/images\/u!1!jplUI_CI3bw!8o9VN1d3-no!6TkM7ozjpN6","dateLastActive":"2023-05-04T14:55:16+00:00","banned":0,"punished":0,"private":false,"label":"✭✭✭✭"},"updateUserID":91566,"lastUserID":156788,"lastUser":{"userID":156788,"name":"Chris Broughton","url":"https:\/\/community.smartsheet.com\/profile\/Chris%20Broughton","photoUrl":"https:\/\/aws.smartsheet.com\/storageProxy\/image\/images\/u!1!p0HeqRqVoXw!8_nRN9ijwLw!lUie_n6pld_","dateLastActive":"2023-08-25T18:59:04+00:00","banned":0,"punished":0,"private":false,"label":"✭✭"},"pinned":false,"pinLocation":null,"closed":false,"sink":false,"countComments":7,"countViews":567,"score":null,"hot":3347530651,"url":"https:\/\/community.smartsheet.com\/discussion\/91824\/dynamic-view-dropdown-lists","canonicalUrl":"https:\/\/community.smartsheet.com\/discussion\/91824\/dynamic-view-dropdown-lists","format":"Rich","tagIDs":[319],"lastPost":{"discussionID":91824,"commentID":392652,"name":"Re: Dynamic View - Dropdown Lists","url":"https:\/\/community.smartsheet.com\/discussion\/comment\/392652#Comment_392652","dateInserted":"2023-08-25T19:03:11+00:00","insertUserID":156788,"insertUser":{"userID":156788,"name":"Chris Broughton","url":"https:\/\/community.smartsheet.com\/profile\/Chris%20Broughton","photoUrl":"https:\/\/aws.smartsheet.com\/storageProxy\/image\/images\/u!1!p0HeqRqVoXw!8_nRN9ijwLw!lUie_n6pld_","dateLastActive":"2023-08-25T18:59:04+00:00","banned":0,"punished":0,"private":false,"label":"✭✭"}},"breadcrumbs":[{"name":"Home","url":"https:\/\/community.smartsheet.com\/"},{"name":"Get Help","url":"https:\/\/community.smartsheet.com\/categories\/get-help"},{"name":"Add Ons and Integrations","url":"https:\/\/community.smartsheet.com\/categories\/apps-and-integrations"}],"groupID":null,"statusID":3,"attributes":{"question":{"status":"accepted","dateAccepted":"2022-06-08T12:36:40+00:00","dateAnswered":"2022-06-06T18:38:56+00:00","acceptedAnswers":[{"commentID":332119,"body":"

Hi @Emmy Anderson<\/a> <\/p>

You are not missing anything. This is how DV works with dropdowns unfortunately. My work around in the past is to create an other option in the drop down, user chooses save. Then have logic built for a text field that appears so the user can input the values not present in dropdown. <\/p>

Hope this helps<\/p>"}]}},"status":{"statusID":3,"name":"Accepted","state":"closed","recordType":"discussion","recordSubType":"question"},"bookmarked":false,"unread":false,"category":{"categoryID":343,"name":"Add Ons and Integrations","url":"https:\/\/community.smartsheet.com\/categories\/apps-and-integrations","allowedDiscussionTypes":["discussion","question"]},"reactions":[{"tagID":3,"urlcode":"Promote","name":"Promote","class":"Positive","hasReacted":false,"reactionValue":5,"count":0},{"tagID":5,"urlcode":"Insightful","name":"Insightful","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":11,"urlcode":"Up","name":"Vote Up","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":13,"urlcode":"Awesome","name":"Awesome","class":"Positive","hasReacted":false,"reactionValue":1,"count":0}],"tags":[{"tagID":319,"urlcode":"functionality","name":"functionality"}]},{"discussionID":66594,"type":"question","name":"Is there a way to use OR in a Dynamic View filter condition?","excerpt":"In a View, I can create a custom filter that selects where the Project Lead is \"Mike\" but I want to also say \"OR Debbie.\" Is that possible? It looks like I can only choose AND.","snippet":"In a View, I can create a custom filter that selects where the Project Lead is \"Mike\" but I want to also say \"OR Debbie.\" Is that possible? It looks like I can only choose AND.","categoryID":343,"dateInserted":"2020-03-09T22:27:57+00:00","dateUpdated":"2022-06-14T14:36:49+00:00","dateLastComment":"2023-08-23T08:56:50+00:00","insertUserID":34501,"insertUser":{"userID":34501,"name":"MikeChambers","url":"https:\/\/community.smartsheet.com\/profile\/MikeChambers","photoUrl":"https:\/\/us.v-cdn.net\/6031209\/uploads\/userpics\/CT5AV825MQ3E\/nG12D47VYRO8A.jpg","dateLastActive":"2023-03-05T01:19:05+00:00","banned":0,"punished":0,"private":false,"label":"✭✭"},"updateUserID":91566,"lastUserID":8888,"lastUser":{"userID":8888,"name":"Andrée Starå","title":"Smartsheet Expert Consultant & Partner | Workflow Consultant \/ CEO @ WORK BOLD","url":"https:\/\/community.smartsheet.com\/profile\/Andr%C3%A9e%20Star%C3%A5","photoUrl":"https:\/\/us.v-cdn.net\/6031209\/uploads\/userpics\/0PAU3GBYQLBT\/nXWM7QXGD6464.jpg","dateLastActive":"2023-08-26T17:06:33+00:00","banned":0,"punished":0,"private":false,"label":"✭✭✭✭✭✭"},"pinned":false,"pinLocation":null,"closed":false,"sink":false,"countComments":9,"countViews":438,"score":null,"hot":3276579287,"url":"https:\/\/community.smartsheet.com\/discussion\/66594\/is-there-a-way-to-use-or-in-a-dynamic-view-filter-condition","canonicalUrl":"https:\/\/community.smartsheet.com\/discussion\/66594\/is-there-a-way-to-use-or-in-a-dynamic-view-filter-condition","format":"rich","lastPost":{"discussionID":66594,"commentID":392055,"name":"Re: Is there a way to use OR in a Dynamic View filter condition?","url":"https:\/\/community.smartsheet.com\/discussion\/comment\/392055#Comment_392055","dateInserted":"2023-08-23T08:56:50+00:00","insertUserID":8888,"insertUser":{"userID":8888,"name":"Andrée Starå","title":"Smartsheet Expert Consultant & Partner | Workflow Consultant \/ CEO @ WORK BOLD","url":"https:\/\/community.smartsheet.com\/profile\/Andr%C3%A9e%20Star%C3%A5","photoUrl":"https:\/\/us.v-cdn.net\/6031209\/uploads\/userpics\/0PAU3GBYQLBT\/nXWM7QXGD6464.jpg","dateLastActive":"2023-08-26T17:06:33+00:00","banned":0,"punished":0,"private":false,"label":"✭✭✭✭✭✭"}},"breadcrumbs":[{"name":"Home","url":"https:\/\/community.smartsheet.com\/"},{"name":"Get Help","url":"https:\/\/community.smartsheet.com\/categories\/get-help"},{"name":"Add Ons and Integrations","url":"https:\/\/community.smartsheet.com\/categories\/apps-and-integrations"}],"groupID":null,"statusID":3,"image":{"url":"https:\/\/us.v-cdn.net\/6031209\/uploads\/814\/KBHVAAPJ5RYA.jpg","urlSrcSet":{"10":"","300":"","800":"","1200":"","1600":""},"alt":"OR.jpg"},"attributes":{"question":{"status":"accepted","dateAccepted":"2020-03-12T17:06:46+00:00","dateAnswered":"2020-03-12T13:01:18+00:00","acceptedAnswers":[{"commentID":242817,"body":"

You are more than welcome!<\/p>

Glad to hear that it worked for your present use-case. <\/p>

Remember! <\/strong>Did my post help or answer your question or solve your problem? Please help the Community by <\/em>marking it as the accepted answer\/helpful<\/em><\/strong>. It will make it easier for others to find a solution or help to answer!<\/em><\/p>"}]}},"status":{"statusID":3,"name":"Accepted","state":"closed","recordType":"discussion","recordSubType":"question"},"bookmarked":false,"unread":false,"category":{"categoryID":343,"name":"Add Ons and Integrations","url":"https:\/\/community.smartsheet.com\/categories\/apps-and-integrations","allowedDiscussionTypes":["discussion","question"]},"reactions":[{"tagID":3,"urlcode":"Promote","name":"Promote","class":"Positive","hasReacted":false,"reactionValue":5,"count":0},{"tagID":5,"urlcode":"Insightful","name":"Insightful","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":11,"urlcode":"Up","name":"Vote Up","class":"Positive","hasReacted":false,"reactionValue":1,"count":0},{"tagID":13,"urlcode":"Awesome","name":"Awesome","class":"Positive","hasReacted":false,"reactionValue":1,"count":0}],"tags":[]}],"initialPaging":{"nextURL":"https:\/\/community.smartsheet.com\/api\/v2\/discussions?page=2&categoryID=343&includeChildCategories=1&type%5B0%5D=Question&excludeHiddenCategories=1&sort=-dateLastComment&limit=3&expand%5B0%5D=all&expand%5B1%5D=-body&expand%5B2%5D=insertUser&expand%5B3%5D=lastUser&status=accepted","prevURL":null,"currentPage":1,"total":643,"limit":3},"title":"Trending Posts","subtitle":null,"description":null,"noCheckboxes":true,"containerOptions":[],"discussionOptions":[]}">

Trending Posts