Key Information

Register
Submit
The challenge is finished.

Challenge Overview

Please review the standard Smartsheet guidelines. ��Valid submissions must consist of high quality, production-ready Java code. ��Make sure to read the judging criteria��(link below)

General App requirements
  • This is a command line Java app.
  • Create a properties file which��will be used by the app at runtime providing several attributes, including user-generated Access Token and the target output directory
  • Wait & retry logic must be present to ensure that when the rate limit has been reached (indicated by a 503 Service unavailable response from the server), the app will wait and retry. The wait time will be calculated as the retry count * 5s. ��Max retry count should be 5, after which the app execution should fail.
Include only sheets owned by the user.
For each sheet owned by the user (where accessLevel="OWNER")
  • Create a workspace/folder hierarchy for the sheet based on its API path
  • Place all workspaces in a directory called "workspaces"����(in case of a workspace name collision, use the��Name" and "Name (2)" pattern)
  • Fetch Excel version of the sheet and store it in its destination workspace/folder
  • Use the sheet name as file name; if there are more than one sheet with the same name in the same folder, append " (NUMBER)" to file name, where NUMBER starts at 2
  • Print progress messages and errors to standard output.
For each sheet that has one or more attachments:
  • Create a folder in the same location as the Excel file for the sheet. ��Use the sheet name + " - attachments" as the folder name.
  • Note that users can attach files to the sheets, to individual rows and to comments in discussions.
  • If there are more than one attachment with the same name, append " (NUMBER)" to attachment file name.
  • For more information on uploading attachments, file size limits, etc. see the Smartsheet Help Center article on Uploading Attachments.
If there any non-file attachments (such as Box, Google Drive or traditional URLs):
  • Create a three-column CSV file inside the attachments folder. ��
  • Use the sheet name + " - non-file attachments.csv" as the file name. ��The three columns are: Name, URL, AttachmentType.
  • For each non-file attachment, add a new CSV row to the file containing values for the Name, URL, and AttachmentType, respectively.
BONUS��requirement ($100 extra when included in a winning submission)��
Use Java managed thread pool to parallelize attachment downloading

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30038136