vendor_report/SHAREPOINT_SETUP.md
2025-11-06 20:50:19 +04:00

128 lines
4.4 KiB
Markdown

# SharePoint Configuration Guide
This guide will help you get the configuration values needed to connect to SharePoint.
## Quick Answer: Where to Get Configuration Values
### 1. SharePoint Site URL
- Go to your SharePoint site in a browser
- Copy the URL from the address bar
- Example: `https://yourcompany.sharepoint.com/sites/YourSiteName`
- **Important**: Include `/sites/SiteName` if it's a subsite
### 2. Folder Path
- Navigate to the folder containing your Excel files in SharePoint
- Right-click the folder → "Copy path" or "Details"
- Example: `/Shared Documents/Reports` or `/sites/YourSite/Shared Documents/Vendor Reports`
- **Tip**: In SharePoint, go to the folder, click "..." menu → "Copy link" and extract the path
### 3. Azure AD App Credentials (Recommended Method)
#### Step 1: Register App in Azure AD
1. Go to [Azure Portal](https://portal.azure.com)
2. Navigate to **Azure Active Directory****App registrations**
3. Click **New registration**
4. Name it (e.g., "Vendor Report Generator")
5. Select **Accounts in this organizational directory only**
6. Click **Register**
#### Step 2: Create Client Secret
1. In your app, go to **Certificates & secrets**
2. Click **New client secret**
3. Add description (e.g., "Vendor Report Secret")
4. Choose expiration (recommend 24 months)
5. Click **Add**
6. **IMPORTANT**: Copy the **Value** immediately (you won't see it again!)
- This is your `client_secret`
#### Step 3: Get Client ID
1. In your app, go to **Overview**
2. Copy the **Application (client) ID**
- This is your `client_id`
#### Step 4: Grant SharePoint Permissions
1. In your app, go to **API permissions**
2. Click **Add a permission**
3. Select **SharePoint**
4. Choose **Application permissions** (not Delegated)
5. Select **Sites.Read.All** (or Sites.ReadWrite.All if you need write access)
6. Click **Add permissions**
7. Click **Grant admin consent** (important!)
8. Wait for status to show "Granted for [Your Organization]"
### 4. Alternative: User Credentials (Less Secure)
If you can't use app authentication:
- `username`: Your SharePoint/Office 365 email
- `password`: Your password (not recommended for automation)
## Complete Configuration Example
Once you have all values, add them to `config.yaml`:
```yaml
sharepoint:
enabled: true
site_url: "https://yourcompany.sharepoint.com/sites/YourSite"
folder_path: "/Shared Documents/Reports" # Path to your Excel files folder
local_dir: "reports" # Where to save downloaded files
use_app_authentication: true # Use app auth (recommended)
client_id: "12345678-1234-1234-1234-123456789abc" # From Azure AD
client_secret: "your-secret-value-here" # From Azure AD (the Value, not Secret ID!)
file_pattern: "*.xlsx" # Only download Excel files
overwrite: true # Overwrite existing files
```
## Testing Your Configuration
1. **Test SharePoint connection**:
```bash
python sharepoint_downloader.py
```
2. **Or use the Web UI**:
- Start: `python web_ui.py`
- Open: `http://localhost:8080`
- Click "Update Data from SharePoint"
- Check for errors
## Common Issues
### "SharePoint authentication failed"
- **Check**: Client ID and secret are correct
- **Check**: App has been granted admin consent
- **Check**: Permissions are "Application permissions" (not Delegated)
### "Folder not found"
- **Check**: Folder path is correct (case-sensitive)
- **Tip**: Use SharePoint's "Copy path" feature
- **Check**: Path starts with `/` (e.g., `/Shared Documents/...`)
### "No files downloaded"
- **Check**: Folder contains Excel files (`.xlsx` or `.xls`)
- **Check**: File pattern matches your files
- **Check**: You have read permissions to the folder
### "Access denied"
- **Check**: App has `Sites.Read.All` permission
- **Check**: Admin consent has been granted
- **Check**: App is registered in the same tenant as SharePoint
## Security Best Practices
1. **Use App Authentication** (not user credentials)
2. **Store secrets securely**:
- Use environment variables in production
- Never commit `config.yaml` with secrets to git
- Use a secrets manager for production
3. **Limit permissions**: Only grant `Sites.Read.All` (not write access unless needed)
4. **Rotate secrets**: Update client secrets regularly
## Getting Help
If you're stuck:
1. Check the terminal/console for detailed error messages
2. Verify each configuration value step by step
3. Test with a simple folder first (one Excel file)
4. Check Azure AD app status in Azure Portal