{"id":2588,"date":"2018-02-07T23:27:38","date_gmt":"2018-02-07T23:27:38","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=2588"},"modified":"2022-09-16T22:20:14","modified_gmt":"2022-09-16T22:20:14","slug":"read-write-smartsheet-data-using-ssis-rest-api-call","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/","title":{"rendered":"Read \/ Write Smartsheet data using SSIS REST API Call"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2606 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\" alt=\"Smartsheet REST API Integration\" width=\"126\" height=\"126\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png 280w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo-150x150.png 150w\" sizes=\"(max-width: 126px) 100vw, 126px\" \/><\/a>In this post you will learn how to Read \/ write Smartsheet data using SSIS (Drag and drop approach without any coding).\u00a0 We will use <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\" target=\"_blank\" rel=\"noopener\">SSIS JSON\/ REST API Source<\/a> to extract data from Smartsheet API and use <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-web-api-destination-connector\/\" target=\"_blank\" rel=\"noopener\">SSIS Web API Destination<\/a> to write data to Smartsheet. This approach is similar to our previous blog where we described <a href=\"https:\/\/zappysys.com\/blog\/get-data-google-spreadsheet-using-ssis\/\" target=\"_blank\" rel=\"noopener\">how to read and write Google sheet using SSIS<\/a><\/p>\n<p>Now let&#8217;s look at step by step approach to call Smartsheet REST API.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"content_block\" id=\"custom_post_widget-2523\"><h2><span id=\"Prerequisites\">Prerequisites<\/span><\/h2>\n<p>Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:<\/p>\n<ol style=\"margin-left: 1.5em;\">\n<li><abbr title=\"SQL Server Integration Services\">SSIS<\/abbr> designer installed.\u00a0Sometimes it is referred to as <abbr title=\"Business Intelligence Development Studio\">BIDS<\/abbr> or <abbr title=\"SQL Server Data Tools\">SSDT<\/abbr> (<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt\" target=\"_blank\" rel=\"noopener\">download it from the Microsoft site<\/a>).<\/li>\n<li>Basic knowledge of SSIS package\u00a0development using\u00a0<em>Microsoft SQL Server Integration Services<\/em>.<\/li>\n<li>Make sure\u00a0<span style=\"text-decoration: underline;\"><a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">ZappySys SSIS PowerPack<\/a><\/span>\u00a0is installed (<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/download\/\" target=\"_blank\" rel=\"noopener\">download it<\/a>, if you haven&#8217;t already).<\/li>\n<li>(<em>Optional step<\/em>)<em>.<\/em>\u00a0<a href=\"https:\/\/zappysys.zendesk.com\/hc\/en-us\/articles\/360035974593\" target=\"_blank\" rel=\"noopener\">Read this article<\/a>, if you are planning to deploy packages to a server and schedule their execution later.<\/li>\n<\/ol>\n<\/div>\n<h2>Create Token to access Smartsheet REST API<\/h2>\n<p>First step to access smartsheet API in SSIS is create API Token. We will use this API token later on to read data from Smartsheet Sheet.<\/p>\n<ol>\n<li>Login to your Smartsheet account<\/li>\n<li>Click on Account &gt; Apps &amp; Integrations &gt; Click API Access &gt; Click Generate Token\n<div id=\"attachment_2599\" style=\"width: 315px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-create-api-access-token.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2599\" class=\"size-full wp-image-2599\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-create-api-access-token.png\" alt=\"Create Smartsheet API Token for REST API Access\" width=\"305\" height=\"257\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-create-api-access-token.png 305w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-create-api-access-token-300x253.png 300w\" sizes=\"(max-width: 305px) 100vw, 305px\" \/><\/a><p id=\"caption-attachment-2599\" class=\"wp-caption-text\">Create Smartsheet API Token for REST API Access (Step 1)<\/p><\/div>\n<div id=\"attachment_2600\" style=\"width: 604px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-rest-api-access-create-new-access-token-step-2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2600\" class=\"size-full wp-image-2600\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-rest-api-access-create-new-access-token-step-2.png\" alt=\"Generate new Smartsheet token (Step 2)\" width=\"594\" height=\"354\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-rest-api-access-create-new-access-token-step-2.png 594w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-rest-api-access-create-new-access-token-step-2-300x179.png 300w\" sizes=\"(max-width: 594px) 100vw, 594px\" \/><\/a><p id=\"caption-attachment-2600\" class=\"wp-caption-text\">Generate new Smartsheet token (Step 2)<\/p><\/div><\/li>\n<li>Once Token is generated copy that for later use (Make sure you treat this token as password and do not share with unauthorized user.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2>Getting started with Smartsheet API<\/h2>\n<p>In this article we will use few out of many API provided by Smartsheet. To get started with Smartsheet API concepts <a href=\"https:\/\/www.smartsheet.com\/blog\/api-getting-started\" target=\"_blank\" rel=\"noopener\">click here<\/a>. To read full details about each Smartsheet API <a href=\"https:\/\/smartsheet-platform.github.io\/api-docs\/\" target=\"_blank\" rel=\"noopener\">click here<\/a>.<\/p>\n<h2>Step-By-Step &#8211; Import\/Export Smartsheet data in SSIS<\/h2>\n<p>Now lets see how to read and write smartsheet data using SSIS.<\/p>\n<h3>Read data from Smartsheet using SSIS JSON \/ REST API Source (Load Smartsheet to SQL Server)<\/h3>\n<p>To read data from smartsheet you need to perform following steps.<\/p>\n<p><strong>Find Sheet ID for Smartsheet API access<\/strong><\/p>\n<ol>\n<li>First you need to know how to find Sheet ID. Perform below steps to find Sheet ID.<\/li>\n<li>Goto your portal and open sheet you like to read. Right click on the Sheet Tab &gt; Click Properties and Copy Sheet ID\n<div id=\"attachment_2601\" style=\"width: 377px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/how-to-find-smartsheet-id-for-rest-api-call.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2601\" class=\"size-full wp-image-2601\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/how-to-find-smartsheet-id-for-rest-api-call.png\" alt=\"Find Sheet ID for Smartsheet API call\" width=\"367\" height=\"127\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/how-to-find-smartsheet-id-for-rest-api-call.png 367w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/how-to-find-smartsheet-id-for-rest-api-call-300x104.png 300w\" sizes=\"(max-width: 367px) 100vw, 367px\" \/><\/a><p id=\"caption-attachment-2601\" class=\"wp-caption-text\">Find Sheet ID for Smartsheet API call<\/p><\/div><\/li>\n<\/ol>\n<p>Once you know Sheet ID. Now lets create SSIS package to extract data from Smartsheet and load into SQL Server.<\/p>\n<ol>\n<li>Create new SSIS Package or Open existing one.<\/li>\n<li>From control flow SSIS toolbox drag Data Flow task<\/li>\n<li>Double click Data flow<\/li>\n<li>From SSIS Toolbox drag and drop <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-json-file-source\/\" target=\"_blank\" rel=\"noopener\">ZS JSON Source (for REST API \/ File)<\/a><\/li>\n<li>Double click JSON Source and configure following properties\n<ol>\n<li>Enter Shartsheet API Access URL as below (Change last part with your own sheet id)\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/api.smartsheet.com\/2.0\/sheets\/YOUR-SHEET-ID-GOES-HERE<\/pre>\n<\/li>\n<li>Check use credentials and then create a new HTTP connection. Select Static Token \/ API Key and enter enter your token we got in previous section<br \/>\n<img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2022\/09\/smartsheetconnection.png\" \/><\/li>\n<li>Click on Select Filter and pick Rows node or just type below text in the Filter textbox\n<pre class=\"lang:default highlight:0 decode:true\">$.rows[*]<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2022\/09\/smartsheetconnection-1.png\" \/><\/li>\n<li>Now goto 2D Array Transformation Tab and set following settings\n<ol>\n<li>Set Transformation Type to <strong>Complex 2-dimensional array<\/strong><\/li>\n<li>Column Name Filter to\u00a0<strong>$.columns[*].title<\/strong><\/li>\n<li>Row Value Filter to\u00a0<strong>$.cells[*].value<br \/>\n<\/strong><\/p>\n<div id=\"attachment_2605\" style=\"width: 700px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-read-smartsheet-data-configure-array-transform-json-source.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2605\" class=\"size-full wp-image-2605\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-read-smartsheet-data-configure-array-transform-json-source.png\" alt=\"SSIS Smartsheet API Configuration - Complex Array transformation (Read nested array)\" width=\"690\" height=\"263\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-read-smartsheet-data-configure-array-transform-json-source.png 690w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-read-smartsheet-data-configure-array-transform-json-source-300x114.png 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/a><p id=\"caption-attachment-2605\" class=\"wp-caption-text\">SSIS Smartsheet API Configuration &#8211; Complex Array transformation (Read nested array)<\/p><\/div><\/li>\n<\/ol>\n<\/li>\n<li>Once everything is configured Click Preview. Click OK to save.<\/li>\n<li>Drag OLEDB Destination from SSIS Toolbox.<\/li>\n<li>Connect JSON SOurce to OLEDB Destination<\/li>\n<li>Double click OLEDB Destination and configure connection (e.g. Select SQL Server connection) and select Target Table or click New to Create new Table based on Source columns.<\/li>\n<li>Click on Mappings to map source columns to target<\/li>\n<li>Click OK to save<\/li>\n<li>Execute Package\n<div id=\"attachment_2604\" style=\"width: 880px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2604\" class=\"size-full wp-image-2604\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example.png\" alt=\"SSIS Example : Loading Smartsheet data into SQL Server (REST API Call)\" width=\"870\" height=\"543\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example.png 870w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example-300x187.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example-768x479.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-smartsheet-to-sql-server-read-json-rest-api-example-436x272.png 436w\" sizes=\"(max-width: 870px) 100vw, 870px\" \/><\/a><p id=\"caption-attachment-2604\" class=\"wp-caption-text\">SSIS Example : Loading Smartsheet data into SQL Server (REST API Call)<\/p><\/div><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h3>Read Smartsheet data with Pagination option<\/h3>\n<p>Smartsheet API support options to read large amount of data in small chunks by using <a href=\"https:\/\/smartsheet-platform.github.io\/api-docs\/#paging\" target=\"_blank\" rel=\"noopener\">pagination options<\/a>. ZappySys offers <a href=\"https:\/\/zappysys.com\/blog\/ssis-rest-api-looping-until-no-more-pages-found\/\" target=\"_blank\" rel=\"noopener\">many ways to paginate<\/a>\u00a0for various API.<\/p>\n<h4>Disable Smartsheet Pagination<\/h4>\n<p>Many API endpoints in Smartsheet by default send you paginated response. Pagination requires some extra configuration so try to disable it if possible by using\u00a0<strong>includeAll=true<\/strong>\u00a0option in your URL as below. If you cannot includeAll for some reason then perform steps listed in next section.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/api.smartsheet.com\/2.0\/sheets?includeAll=true<\/pre>\n<h4>Smartsheet Pagination in SSIS<\/h4>\n<p>To paginate Smartsheet response in SSIS JSON Source perform the following steps. Below steps assume that you trying to get all sheets by calling <span class=\"lang:default highlight:0 decode:true crayon-inline \">https:\/\/api.smartsheet.com\/2.0\/sheets<\/span>\u00a0\u00a0URL in JSON Source (Just like we explained in previous section). Before dataflow we have to add one step to enable pagination. Lets check.<\/p>\n<ol>\n<li>Go to Control Flow designer right click &gt; Select Variables<\/li>\n<li>Create new <strong>string datatype<\/strong> variable called name it <strong>TotalPages<\/strong>. Set <strong>default value to 0<\/strong><\/li>\n<li>Now drag <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-rest-api-web-service-task\/\" target=\"_blank\" rel=\"noopener\">ZS REST API Task<\/a> from SSIS Toolbox<\/li>\n<li>Enter Following URL (we don&#8217;t need many rows to so reduced default page size to just 10)\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/api.smartsheet.com\/2.0\/sheets?pageSize=10<\/pre>\n<\/li>\n<li>Now click on Raw Edit (Above Headers grid)<\/li>\n<li>Enter following header (Replace Token with your own token we obtained in the previous section)\n<pre class=\"lang:default highlight:0 decode:true\">Authorization: Bearer YOUR-TOKEN-GOES-HERE<\/pre>\n<\/li>\n<li>Go to Response Settings Tab<\/li>\n<li>Select Content Type Json and enter filter as\u00a0<strong>$.totalPages<\/strong><\/li>\n<li>Check Save response to Variable. Select Variable we created in Previous step (Only string datatype variables are visible)\n<div id=\"attachment_2610\" style=\"width: 932px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-save-rest-api-response-json-value-to-variable.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2610\" class=\"size-full wp-image-2610\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-save-rest-api-response-json-value-to-variable.png\" alt=\"Save Total Page Count to SSIS variable\" width=\"922\" height=\"293\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-save-rest-api-response-json-value-to-variable.png 922w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-save-rest-api-response-json-value-to-variable-300x95.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-save-rest-api-response-json-value-to-variable-768x244.png 768w\" sizes=\"(max-width: 922px) 100vw, 922px\" \/><\/a><p id=\"caption-attachment-2610\" class=\"wp-caption-text\">Save Total Page Count to SSIS variable<\/p><\/div><\/li>\n<li>Click Test Request\/Response to confirm it works<\/li>\n<li>Click OK to save<\/li>\n<li>Now let&#8217;s use this variable to configure <strong>MaxPageNumber<\/strong> setting in JSON Source. Using following way you can make any Data flow component property dynamic.\n<div id=\"attachment_2609\" style=\"width: 1069px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2609\" class=\"size-full wp-image-2609\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component.png\" alt=\"Define expression on SSIS Data flow Component Property (Dynamic Value)\" width=\"1059\" height=\"732\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component.png 1059w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component-300x207.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component-768x531.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-expression-on-data-flow-component-1024x708.png 1024w\" sizes=\"(max-width: 1059px) 100vw, 1059px\" \/><\/a><p id=\"caption-attachment-2609\" class=\"wp-caption-text\">Define expression on SSIS Data flow Component Property (Dynamic Value)<\/p><\/div><\/li>\n<li>Now connect your REST API Task to Data flow<\/li>\n<li>On the JSON Source go to Pagination Tab and enter following settings.\n<div id=\"attachment_2611\" style=\"width: 675px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-smartsheet-api-pagination-json-rest-source.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2611\" class=\"size-full wp-image-2611\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-smartsheet-api-pagination-json-rest-source.png\" alt=\"Smartsheet API Pagination settings - SSIS JSON \/ REST Source\" width=\"665\" height=\"275\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-smartsheet-api-pagination-json-rest-source.png 665w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-smartsheet-api-pagination-json-rest-source-300x124.png 300w\" sizes=\"(max-width: 665px) 100vw, 665px\" \/><\/a><p id=\"caption-attachment-2611\" class=\"wp-caption-text\">Smartsheet API Pagination settings &#8211; SSIS JSON \/ REST Source<\/p><\/div><\/li>\n<li>That&#8217;s it. Now if you run it you will see all records will be pulled.<\/li>\n<\/ol>\n<div class=\"su-note\"  style=\"border-color:#e5dd9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">You can configure delay after each request [on Throttling Tab] if you want to slow down requests. This is usually helpful if you are getting too many API requests error at runtime.<\/div><\/div>\n<h3>Write data to Smartsheet using SSIS Web API Destination (SQL Server to Smartsheet Import)<\/h3>\n<p>Now lets see how to write some data to Smartsheet Sheet. We will read records from SQL Server and write to SmartSheet using ZS Web API Destination<\/p>\n<p>For inserting multiple rows we can call <a href=\"https:\/\/smartsheet-platform.github.io\/api-docs\/#add-rows\" target=\"_blank\" rel=\"noopener\">this Smartsheet API Endpoint<\/a><\/p>\n<p>Basically High level steps are.<\/p>\n<ol>\n<li>Find out Smartsheet Column ID to use along with API call<\/li>\n<li>Read Records from SQL Server using OLEDB Source<\/li>\n<li>Construct desired JSON for Add New Row API Call<\/li>\n<li>Send JSON to <a href=\"https:\/\/smartsheet-platform.github.io\/api-docs\/#add-rows\" target=\"_blank\" rel=\"noopener\">Smartsheet Add Row API<\/a>\u00a0 (Configure Bulk Options )<\/li>\n<\/ol>\n<h4>Find out Smartsheet Column ID<\/h4>\n<p>Very first step you have to perform is get Column ID which correspond to certain title. You can use following URL endpoint to get list of all columns (Change your Sheet ID). Make sure you append\u00a0<strong>includeAll=true<\/strong>\u00a0else it may only fetch 100 columns. You can save Column result to some database table to File to copy ID. Preview Grid also allows to copy cell.<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/api.smartsheet.com\/2.0\/sheets\/YOUR-SHEET-ID\/columns?includeAll=true<\/pre>\n<div id=\"attachment_2613\" style=\"width: 770px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-get-smartsheet-column-id-api-call-json-rest-source.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2613\" class=\"size-full wp-image-2613\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-get-smartsheet-column-id-api-call-json-rest-source.png\" alt=\"Get Smartsheet Column ID using API call in SSIS JSON Source\" width=\"760\" height=\"734\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-get-smartsheet-column-id-api-call-json-rest-source.png 760w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-get-smartsheet-column-id-api-call-json-rest-source-300x290.png 300w\" sizes=\"(max-width: 760px) 100vw, 760px\" \/><\/a><p id=\"caption-attachment-2613\" class=\"wp-caption-text\">Get Smartsheet Column ID using API call in SSIS JSON Source<\/p><\/div>\n<h4>Configure SQL Server Source (OLEDB Source)<\/h4>\n<p>Once you have column ID you can drag OLEDB Source from SSIS Toolbox and configure to read from SQL Server. Below is sample source query to extract data from SQL Server.<\/p>\n<pre class=\"lang:tsql decode:true\">Select OrderID,CustomerID,EmployeeID,OrderDate from Orders<\/pre>\n<h4>Configure SSIS Template Transform<\/h4>\n<p>Once SQL Source is configure we are ready for next step. SSIS PowerPack v2.6.4 and later introduced new SSIS transform called\u00a0<strong>Template Transform<\/strong>. This transform allows you to produce desired JSON \/XML from single input record by using Column name as placeholder anywhere in your text. This is much simpler method than constructing JSON using JSON Generator Transform<\/p>\n<p>Here is the sample JSON we want to produce to insert into Sheet which contains 4 columns OrderID, CustomerID, EmployeeID and OrderDate.<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"toTop\": true,\r\n  \"cells\": [\r\n    {\r\n      \"columnId\": 8146714579232644,\r\n      \"value\": 10548\r\n    },\r\n    {\r\n      \"columnId\": 828365184755588,\r\n      \"value\": \"TOMSP\"\r\n    },\r\n    {\r\n      \"columnId\": 5331964812126084,\r\n      \"value\": 3\r\n    },\r\n    {\r\n      \"columnId\": 3080164998440836,\r\n      \"value\": \"1997-05-26T00:00:00\"\r\n    }\r\n  ]\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Now lets configure SSIS Template Transform to create desired JSON Request for API call.<\/p>\n<ol>\n<li>Drag ZS Template Transform from the SSIS toolbox<\/li>\n<li>Connect OLEDB Source to ZS Template Transform<\/li>\n<li>Double click Template Transform. Paste above sample request in the Template Text<\/li>\n<li>Now highlight sample value you wish to replace from upstream by some input column.<\/li>\n<li>Click on <strong>Insert Placeholders<\/strong> &gt; <strong>Columns<\/strong> &gt;\u00a0 Your Column<\/li>\n<li>Perform above steps for each value you wish to replace. You can also add <a href=\"https:\/\/zappysys.com\/onlinehelp\/ssis-powerpack\/scr\/ssis-format-specifiers.htm\" target=\"_blank\" rel=\"noopener\">use placeholder functions<\/a> such as\u00a0<strong>JSONENC<\/strong>\u00a0after column name (useful if you expecting new line or special characters such as tab or double quotes in your input text ). Date formatting (e.g. <strong>yyyy-MM-dd\u00a0<\/strong>) also allowed. See below example after placeholders added.\n<pre class=\"lang:default decode:true \">{\r\n  \"toTop\": true,\r\n  \"cells\": [\r\n    {\r\n      \"columnId\": 8146714579232644,\r\n      \"value\": &lt;%OrderID%&gt;\r\n    },\r\n    {\r\n      \"columnId\": 828365184755588,\r\n      \"value\": \"&lt;%CustomerID,JSONENC%&gt;\"\r\n    },\r\n    {\r\n      \"columnId\": 5331964812126084,\r\n      \"value\": &lt;%EmployeeID%&gt;\r\n    },\r\n    {\r\n      \"columnId\": 3080164998440836,\r\n      \"value\": \"&lt;%OrderDate,yyyy-MM-ddTHH:mm:ss%&gt;\"\r\n    }\r\n  ]\r\n}<\/pre>\n<\/li>\n<li>Here is final configuration of Template Transform\n<div id=\"attachment_2614\" style=\"width: 983px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-template-transform-create-json-xml-for-api-call.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2614\" class=\"size-full wp-image-2614\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-template-transform-create-json-xml-for-api-call.png\" alt=\"Create JSON for API Request (POST) using SSIS Template Transform\" width=\"973\" height=\"611\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-template-transform-create-json-xml-for-api-call.png 973w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-template-transform-create-json-xml-for-api-call-300x188.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-template-transform-create-json-xml-for-api-call-768x482.png 768w\" sizes=\"(max-width: 973px) 100vw, 973px\" \/><\/a><p id=\"caption-attachment-2614\" class=\"wp-caption-text\">Create JSON for API Request (POST) using SSIS Template Transform<\/p><\/div><\/li>\n<\/ol>\n<h4>Configure SSIS Web API Destination (POST New Rows to Smartsheet)<\/h4>\n<p>Now lets configure last step. This will POST API request to insert multiple rows to Smartsheet. Previous template transform crafts request for one new row but later in this section we will enable Batch mode so we can JOIN multiple JSON and created Bulk requests in one go so we avoid many API call. Always use Bulk mode if API endpoint supports it.<\/p>\n<ol>\n<li>Drag and drop <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-web-api-destination-connector\/\" target=\"_blank\" rel=\"noopener\">ZS Web API destination<\/a> from SSIS Toolbox<\/li>\n<li>Connect previous Template Transform to your Web API Destination.<\/li>\n<li>Select new HTTP connection. When Prompted enter following URL on HTTP Connection UI (Replace your Sheet ID)\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/api.smartsheet.com\/2.0\/sheets\/YOUR-SHEET-ID\/rows<\/pre>\n<\/li>\n<li>In the input column for Body select <strong>TemplateOutput<\/strong><\/li>\n<li>For Body you can enter Sample Body if you wish to Test at design time else leave it blank<\/li>\n<li>Select Body Content Type as <strong>application\/json<\/strong><\/li>\n<li>In the Headers enter Authorization Header like we did in previous section (Read from Smartsheet)\n<pre class=\"lang:default highlight:0 decode:true\">Authorization: Bearer YOUR-TOKEN-GOES-HERE<\/pre>\n<div id=\"attachment_2615\" style=\"width: 823px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-web-api-destination-insert-multiple-rows-smartsheet-rest-api-call.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2615\" class=\"size-full wp-image-2615\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-web-api-destination-insert-multiple-rows-smartsheet-rest-api-call.png\" alt=\"Configure SSIS Web API Destination - Add \/ Insert Rows to Smartsheet (Bulk API call)\" width=\"813\" height=\"616\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-web-api-destination-insert-multiple-rows-smartsheet-rest-api-call.png 813w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-web-api-destination-insert-multiple-rows-smartsheet-rest-api-call-300x227.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-web-api-destination-insert-multiple-rows-smartsheet-rest-api-call-768x582.png 768w\" sizes=\"(max-width: 813px) 100vw, 813px\" \/><\/a><p id=\"caption-attachment-2615\" class=\"wp-caption-text\">Configure SSIS Web API Destination &#8211; Add \/ Insert Rows to Smartsheet (Bulk API call)<\/p><\/div><\/li>\n<li>Go to Batch Setting mode. Change following settings\n<ol>\n<li>Check on Enable submitting multiple records<\/li>\n<li>For Body Header enter <strong>[<\/strong><\/li>\n<li>For Body Footer enter\u00a0 <strong>]<\/strong><\/li>\n<li>For Body Row separator enter<strong> ,<\/strong> (i.e comma)<\/li>\n<li>You can change Body Batch Size to desired value (100 is recommended)\n<div id=\"attachment_2616\" style=\"width: 919px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-call-smartsheet-rest-api-post-bulk-mode-web-api-destination.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2616\" class=\"size-full wp-image-2616\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-call-smartsheet-rest-api-post-bulk-mode-web-api-destination.png\" alt=\"Configure SSIS Web API Destination for Bulk API call (Smartsheet REST API - Insert multiple rows)\" width=\"909\" height=\"445\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-call-smartsheet-rest-api-post-bulk-mode-web-api-destination.png 909w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-call-smartsheet-rest-api-post-bulk-mode-web-api-destination-300x147.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-call-smartsheet-rest-api-post-bulk-mode-web-api-destination-768x376.png 768w\" sizes=\"(max-width: 909px) 100vw, 909px\" \/><\/a><p id=\"caption-attachment-2616\" class=\"wp-caption-text\">Configure SSIS Web API Destination for Bulk API call (Smartsheet REST API &#8211; Insert multiple rows)<\/p><\/div><\/li>\n<\/ol>\n<\/li>\n<li>That&#8217;s it run your package to test the entire flow.\n<div id=\"attachment_2617\" style=\"width: 1058px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-2617\" class=\"size-full wp-image-2617\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example.png\" alt=\"Loading data from SQL Server to Smartsheet using SSIS (Web API POST Example - Bulk Mode)\" width=\"1048\" height=\"777\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example.png 1048w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example-300x222.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example-768x569.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/ssis-loading-sql-server-to-smartsheet-rest-api-example-1024x759.png 1024w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><\/a><p id=\"caption-attachment-2617\" class=\"wp-caption-text\">Loading data from SQL Server to Smartsheet using SSIS (Web API POST Example &#8211; Bulk Mode)<\/p><\/div><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<div class=\"content_block\" id=\"custom_post_widget-1887\"><h3>Truncation related error<\/h3>\n<p style=\"text-align: justify;\">The most common error you may face when you run an SSIS package is truncation error. During the design time only 300 rows are scanned from a source (a file or a REST API call response) to detect datatypes but at runtime, it is likely you will retrieve far more records. So it is possible that you will get longer strings than initially expected.\u00a0For detailed instructions on how to fix common metadata related errors read an article &#8220;<a href=\"\/\/zappysys.com\/blog\/handling-ssis-component-metadata-issues\/\" target=\"_blank\" rel=\"noopener\">How to handle SSIS errors (truncation, metadata issues)<\/a>&#8220;.<\/p>\n<h3>Authentication related error<\/h3>\n<p>Another frequent error you may get is an authentication error, which happens when you deploy\/copy a package to another machine and run it there. Check <a href=\"#Deployment_to_Production\">the paragraph below<\/a>\u00a0to see why it happens and how to solve this problem.<\/p>\n<\/div>\n<div class=\"content_block\" id=\"custom_post_widget-2021\"><h2>Things have gone bad: Error handling &amp; debugging<\/h2>\n<p style=\"text-align: justify;\">Incidentally, bad things can happen<i>. <\/i>A remote server may go offline or your server may go out of memory. In any case, you may want to know when that happens and take actions accordingly. For that purpose, you have to redirect bad rows to some other destination. For this example, we will take and use <em>Web API Destination<\/em>, but basically, you can use any SSIS component:<\/p>\n<h3>Handling errors<\/h3>\n<ol style=\"margin-left: 0;\">\n<li>Add a <em>Derived Column<\/em>\u00a0above <em>Web API Destination<\/em> with expression\u00a0<strong>&#8220;(DT_WSTR,4000)ZS_JSON_OUT&#8221;<\/strong>\u00a0and name it <strong>&#8220;JsonAsString&#8221;<\/strong>. This will let you see what JSON you are actually passing.<\/li>\n<li>Then add a database or file destination or use another\u00a0<em>Trash Destination<\/em>\u00a0for debugging purposes and redirect the bad rows (<span style=\"color: #d66565;\">red arrow<\/span>) from <em><em>Web API Destination <\/em><\/em>into it<em><em>. <\/em><\/em>Don&#8217;t forget to set <span class=\"lang:default decode:true crayon-inline\">Redirect row<\/span>\u00a0option for both, <em>Error<\/em> and <em>Truncation<\/em> columns:<em><em><br \/>\n<\/em><\/em><\/p>\n<div class=\"wp-caption\">\n<p><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1487 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png\" alt=\"Redirect bad rows from &lt;em&gt;Web API Destination&lt;\/em&gt; to &lt;em&gt;Trash Destination&lt;\/em&gt; when load from SQL Server to Elasticsearch is failing. Add derived column JsonAsString to be able to read JSON you are using.\" width=\"739\" height=\"267\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png 739w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows-300x108.png 300w\" sizes=\"(max-width: 739px) 100vw, 739px\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Redirected failed requests from <em>Web API Destination<\/em> to a desired destination when loading from SQL Server to REST API Service is failing. Derived Column <em>JsonAsString<\/em> added to be able to read JSON which was passed to Elasticsearch<\/p>\n<\/div>\n<\/li>\n<li>Finally, add a\u00a0<a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/ms140318%28v=sql.90%29.aspx?f=255&amp;MSPPError=-2147217396\" target=\"_blank\" rel=\"noopener\"><em>Data Viewer<\/em><\/a> for the red path, if you want to debug the flow. You will be able to see URL, JSON and the error message for each record. You may want to copy-paste <em>ErrorMessage<\/em>\u00a0to <em>Notepad <\/em>if you want it to be more readable:\n<div class=\"wp-caption\">\n<p><a href=\"\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1494 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling.png\" alt=\"Use Data Viewer to view HTTP requests that failed to be fulfilled in Elasticsearch\" width=\"752\" height=\"280\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling.png 752w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2017\/06\/ssis-sql-server-to-elasticsearch-error-handling-300x112.png 300w\" sizes=\"(max-width: 752px) 100vw, 752px\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Use Data Viewer to view HTTP requests that failed to be fulfilled.<\/p>\n<\/div>\n<\/li>\n<\/ol>\n<div class=\"su-note\" style=\"border-color: #e5dea5; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;\">\n<div class=\"su-note-inner su-clearfix\" style=\"background-color: #fff7b7; border-color: #fffdf1; color: #333333; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;\"><strong>NOTE<\/strong>: You can read more about redirecting rows in <a href=\"\/\/zappysys.com\/blog\/ssis-error-handling-in-data-flow-redirect-bad-rows\/\" target=\"_blank\" rel=\"noopener\">SSIS Error Handling (Redirect bad rows)<\/a> article.<\/div>\n<\/div>\n<h3>Debugging HTTP requests<\/h3>\n<p style=\"text-align: justify;\">A common thing you have to do when working with HTTP requests is to debug those requests; e.g. to check what headers, body or URL was passed.\u00a0<span id=\"Debug_Web_API_call_using_Fiddler\"><\/span>To test how things look behind the scenes we strongly suggest to use <a href=\"https:\/\/zappysys.com\/blog\/how-to-use-fiddler-to-analyze-http-web-requests\/\" target=\"_blank\" rel=\"noopener\">Fiddler<\/a>\u00a0&#8211; a popular web debugging tool.<\/p>\n<p style=\"text-align: justify;\">Inside it, you can double-click the URL entry (Right side) to see Request and Response Panels. The top panel is Request (URL, Headers, Body) and Bottom Panel is Response. For https:\/\/ (secure URL) make sure you enable HTTPS option in Fiddler (Tools &gt; Options &gt; HTTPS &gt; Check Decrypt https request):<\/p>\n<div id=\"attachment_2344\" class=\"wp-caption alignnone\">\n<p><a href=\"https:\/\/i1.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png?ssl=1\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2344 size-full\" style=\"border: 0px; max-width: 100%; height: auto; box-shadow: rgba(0, 0, 0, 0.176) 0px 1px 2px;\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png\" alt=\"Debugging Web API call using Fiddler in SSIS\" width=\"1287\" height=\"564\" data-attachment-id=\"2344\" data-permalink=\"https:\/\/zappysys.com\/blog\/pass-authorization-header-redirected-location\/ssis-rest-api-call-debug-via-fiddler\/#main\" data-orig-file=\"https:\/\/i1.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png?fit=1287%2C564&amp;ssl=1\" data-orig-size=\"1287,564\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ssis-rest-api-call-debug-via-fiddler\" data-image-description=\"&lt;p&gt;Debugging Web API call using Fiddler in SSIS&lt;\/p&gt; \" data-medium-file=\"https:\/\/i1.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png?fit=300%2C131&amp;ssl=1\" data-large-file=\"https:\/\/i1.wp.com\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png?fit=720%2C316&amp;ssl=1\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler.png 1287w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler-300x131.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler-768x337.png 768w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2016\/05\/ssis-rest-api-call-debug-via-fiddler-1024x449.png 1024w\" sizes=\"(max-width: 1287px) 100vw, 1287px\" \/><\/a><\/p>\n<p class=\"wp-caption-text\">Debugging Web API call using Fiddler in SSIS<\/p>\n<\/div>\n<\/div>\n<h2>Conclusion<\/h2>\n<p>Smartsheet API provides great way to automate data read\/write. However to call Smartsheet API \u00a0you have to use SDK \/ coding approach (e.g. C#, Java, Python, Ruby). Luckily ZappySys\u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a>\u00a0provides great way to integrate any Smartsheet API call via simple drag and drop approach without coding. Try \u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a>\u00a0for free and call virtually any REST API in few clicks.<\/p>\n<p><strong>Keywords:<\/strong> Import smartsheet into sql server | export smartsheet to sql server | ssis smartsheet read | ssis smartsheet write | reading smartsheet data using API call | write to smartsheet<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this post you will learn how to Read \/ write Smartsheet data using SSIS (Drag and drop approach without any coding).\u00a0 We will use SSIS JSON\/ REST API Source to extract data from Smartsheet API and use SSIS Web API Destination to write data to Smartsheet. This approach is similar to our previous [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2606,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[225,17,10,267,200],"tags":[6,3,268,12],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-02-07T23:27:38+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2022-09-16T22:20:14+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"280\" \/>\r\n\t<meta property=\"og:image:height\" content=\"280\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/\",\"url\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/\",\"name\":\"Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\",\"datePublished\":\"2018-02-07T23:27:38+00:00\",\"dateModified\":\"2022-09-16T22:20:14+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png\",\"width\":280,\"height\":280,\"caption\":\"smartsheet-api-integration-logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Read \/ Write Smartsheet data using SSIS REST API Call\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog","description":"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/","og_locale":"en_US","og_type":"article","og_title":"Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog","og_description":"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog","og_url":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2018-02-07T23:27:38+00:00","article_modified_time":"2022-09-16T22:20:14+00:00","og_image":[{"width":280,"height":280,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/","url":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/","name":"Read \/ Write Smartsheet data using SSIS REST API Call | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png","datePublished":"2018-02-07T23:27:38+00:00","dateModified":"2022-09-16T22:20:14+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Read \/ Write Smartsheet data using SSIS REST API Call - ZappySys Blog","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/02\/smartsheet-api-integration-logo.png","width":280,"height":280,"caption":"smartsheet-api-integration-logo"},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/read-write-smartsheet-data-using-ssis-rest-api-call\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Read \/ Write Smartsheet data using SSIS REST API Call"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/2588"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=2588"}],"version-history":[{"count":10,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/2588\/revisions"}],"predecessor-version":[{"id":9827,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/2588\/revisions\/9827"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/2606"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=2588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=2588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=2588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}