SharePoint Folder Downloader — v0.4.0
Download missing files from SharePoint, OneDrive, Google Drive and Amazon S3 in a full-page VS Code dashboard. The existing extension ID remains SridharanSelvaraj.sharepoint-missing-files; this is an upgrade, not a second extension.
Open the full page
Install sharepoint-folder-downloader-0.4.0.vsix using Extensions → … → Install from VSIX…, reload if prompted, and click the SharePoint Downloader folder/download icon in the Activity Bar. The dashboard opens in an editor tab and hides the side/panel areas to give it the available editor width. It also works without an open project. SharePoint Downloader: Open Full-Page Dashboard reopens it if the icon is hidden.
Saved connections are on the left of the page; the selected connection's progress and controls are on the right. Add/Edit forms open as full editor tabs. The layout adapts to narrow windows and VS Code light/dark themes.
Providers and prerequisites
| Source |
Authentication |
Supported scope |
| SharePoint / OneDrive for Business direct folder |
Interactive Playwright Edge/Chromium sign-in |
Direct /sites/, /teams/, /personal/ paths and classic/modern folder view links |
| OneDrive personal/business shared link |
Microsoft Graph device-code sign-in; your public-client app ID |
Personal OneDrive URLs, 1drv.ms, and SharePoint sharing links such as /:f:/g/personal/... |
| Google Drive |
Your Desktop OAuth app ID/client secret; standard browser sign-in |
Accessible files/folders and shared-drive content; supported native documents exported |
| Amazon S3 private bucket/prefix |
Existing AWS profile/SSO/credential chain |
s3://bucket/prefix and standard S3 HTTPS bucket/prefix URLs |
| Amazon S3 public bucket |
Anonymous mode, with list/read permission |
Publicly listable prefixes |
| Amazon S3 pre-signed link |
Authorization already in the signed URL |
One object per URL; expiration still applies |
Private Microsoft/Google connections require app registrations you or your organization controls. No developer-owned OAuth application IDs are bundled. Click Provider Setup in the dashboard or form for the bundled step-by-step CLOUD-SETUP.md guide. Organizational permissions, consent and download policies still apply.
Microsoft sharing-link resolution requires Files.ReadWrite delegated consent according to its API; this extension only lists/downloads and does not write or delete cloud files. Google sign-in requests drive.readonly. AWS credentials are obtained through boto3's existing credential chain; the form does not store access keys.
Install dependencies
Desktop VS Code 1.85+, Python 3.10+, and a writable filesystem with hard-link support (for example NTFS/APFS/ext4) are required.
Install packages into the same Python environment the extension uses:
python -m pip install playwright msal requests google-auth google-auth-oauthlib boto3
python -m playwright install chromium
Use py on Windows or your virtual environment's executable as appropriate. Chromium/Edge is needed for the SharePoint browser connector. You can instead install the bundled worker/requirements.txt.
Click Select Python to choose the executable if detection fails or you installed dependencies in another environment. sharepointMissing.pythonPath remains available as a machine/user setting and accepts an executable path, without arguments.
Add and run a connection
- Click Add Folder Pair.
- Enter a name and source URL. The provider-specific setup fields appear automatically.
- Click Browse… for the local destination, or enter an absolute path.
- For Microsoft/Google API connections, enter the required app details. For S3, select an existing profile/region or anonymous public access.
- Choose one-time or automatic mode and 5, 15, 30, 60 minutes or a custom 1–1440 whole-minute interval. Include subfolders is optional.
- Save, select the connection, and click Start, Download Missing Files, or Start Auto Check.
Sign-in depends on the provider:
- SharePoint browser: sign in/MFA in the visible browser, then click I've signed in.
- Microsoft Graph: click Open Microsoft Sign-in, enter the displayed device code and complete consent/MFA.
- Google: complete the standard browser consent flow; the temporary localhost callback returns control automatically.
- S3: use the configured AWS credentials/SSO session, public access, or pre-signed URL.
Reconnect Account forgets the connection's saved OAuth token cache and restarts sign-in. It does not revoke provider-side app permissions; use the provider's account settings to revoke access.
Controls and truthful progress
Edit updates a connection. Cancel discards the form. Delete removes configuration and its stored source/credentials while keeping downloaded files. Stop a connection before editing/deleting it.
The dashboard shows actual status, discovered/downloaded/skipped/failed counts, current filename, processed-file progress, last successful check and next scheduled check. The total is unknown until discovery finishes; progress counts processed files, not bytes. No success is fabricated while waiting for sign-in/setup.
Retry Failed retries the last run's failed remote file IDs/keys. Discovery/authentication errors require a whole check. Stop Auto Check also stops a one-time download. It terminates this job's worker/process tree and cleans its incomplete staging files. Existing files and completed downloads are kept. Open Folder opens Explorer/Finder/the system file manager. View Logs opens the Output channel.
Multiple non-overlapping destinations can run independently. Overlapping destinations cannot run concurrently. Automatic checks run while VS Code and the required session remain active, with the next check scheduled after the current check. Transient listing/network errors are reported and scheduled again; authentication errors stop the job. Reloading/restarting VS Code stops jobs; restart them explicitly. Connections and last-success timestamps are restored.
Missing-only behavior and limits
Skip existing, preserve relative folder structure, never overwrite and never delete are always enabled. Files stage on the destination filesystem and publish through exclusive hard links. Filesystems without hard-link support, including exFAT/FAT and some network shares, are rejected. Do not let other processes modify the destination tree during a job; symlink/junction destinations are rejected where detectable.
- Existing local names are skipped regardless of timestamps, size or newer cloud revisions.
- Google Docs/Sheets/Slides/Drawings export as DOCX/XLSX/PPTX/PDF. Other Google-native types and shortcuts fail explicitly. Provider export-size/policy limits still apply. Duplicate remote names mapping to one local path are reported.
- S3 prefixes preserve paths beneath the selected prefix. A pre-signed URL authorizes one object, not listing an entire bucket. Replace expired signed URLs with fresh authorized links.
- Microsoft API connectors target the global Microsoft cloud. Sovereign-cloud endpoints are not configured.
- SharePoint files currently buffer response bodies in memory; cloud API downloads stream to staging files. Very large SharePoint files can require substantial memory.
- SharePoint internal folders named
Forms remain excluded from recursive traversal.
Privacy
No organization-specific folders are preconfigured. Ordinary global storage holds connection metadata, redacted labels/fingerprints for sensitive URLs, and last-check timestamps. Sharing links, signed URLs, Google desktop client secrets and OAuth caches use VS Code SecretStorage. Sensitive runtime sources and credentials pass to Python over stdin, not command-line arguments. Credential events are intercepted before logs or webview delivery. No analytics are sent.
Logs can contain file names, non-secret paths and provider errors; review them before sharing. Authentication profiles, runtime logs, private configurations and credentials are excluded from the package. The source and screenshots use generic examples only.
Troubleshooting
- Missing Python/dependencies: install them in the selected environment; use Select Python and Provider Setup.
- Microsoft app/consent error: verify app ID, account audience, tenant, public-client/device-code enablement and required delegated permissions. Reconnect if the account/cache is wrong.
- Google consent error: use a Desktop client, enable Drive API, configure consent/test users and satisfy organizational/Google app-verification rules.
- S3 error: verify bucket/prefix, profile/SSO login, region and list/get/KMS permissions. Public object access does not guarantee bucket listing permission.
- HTTP 401/403 or expired session: reconnect/restart and check permissions. Policies are never bypassed.
- Filesystem error: choose a writable NTFS/APFS/ext4 destination, with no symlink/junction or concurrent writer.
Validation and release status
The full-page UI, original engine, provider adapters and secure IPC have automated offline tests. Real Microsoft/Google/AWS sign-in, tenant/sharing policies, and live provider downloads have not been validated because no authorized app registrations/accounts were configured for this session. Windows/Linux native behavior also remains unverified. See TEST-REPORT.md and RELEASE-CHECKLIST.md in the source distribution. Do not interpret support for a provider as a guarantee for every link type or policy.
npm ci
npm run check
npm test
npm run package
Real UI screenshots are bundled in media/screenshots/; source viewers can open UI-GALLERY.md. Public image hosting remains needed before embedding screenshots into a Marketplace README. No new Marketplace publication is performed automatically.
License
Proprietary / UNLICENSED. All rights reserved. Existing publisher identity and licensing terms are retained; see LICENSE.txt.