[{"data":1,"prerenderedAt":192},["ShallowReactive",2],{"topic:scheduling":3},[4,13,18,23,31,37,42,48,53,58,64,69,75,80,85,90,95,100,106,111,117,122,127,132,137,142,148,153,158,163,168,174,179,186],{"path":5,"title":6,"description":7,"type":8,"topics":9,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fmoving-data-between-excel-and-databases\u002Fdownload-new-excel-files-from-an-sftp-server","Download New Excel Files from an SFTP Server","Collect the spreadsheets a partner drops on an SFTP server with paramiko: connect with a pinned host key, list the folder with sizes and modification times, ignore partial uploads and files still being written, download only files not fetched before — or fetched before but changed since — into a temporary name and rename, check each workbook opens, keep a small state file, and test it all against a local SFTP server.","how-to",[10,11],"data-sources","scheduling",null,{"path":14,"title":15,"description":16,"type":8,"topics":17,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fmoving-data-between-excel-and-databases\u002Fread-excel-attachments-into-a-database-nightly","Read Excel Attachments into a Database Nightly","Load the spreadsheets that arrive by email into a database every night without duplicates or half-loaded files: take the saved attachments from an inbox folder, skip files already loaded by their content hash, validate each workbook's columns and values, write each file in its own transaction with an upsert on the business key, record every load in a log table, move rejected files to a quarantine folder, and report the night's results.",[10,11],{"path":19,"title":20,"description":21,"type":8,"topics":22,"kind":12},"\u002Fadvanced-data-transformation-and-cleaning\u002Fmoving-data-between-excel-and-databases\u002Frefresh-an-excel-report-from-a-database-on-a-schedule","Refresh an Excel Report from a Database on a Schedule","Keep a workbook current without anyone asking: an incremental query with a watermark, an atomic write nobody can catch half-finished, a freshness stamp readers can see, and a check that the refresh actually ran.",[10,11],{"path":24,"title":25,"description":26,"type":27,"topics":28,"kind":12},"\u002Fautomating-reporting-workflows","Automating Reporting Workflows with Python and Excel","Build an end-to-end Python reporting pipeline: ingest data, transform it with pandas, generate a styled Excel workbook, then schedule and email the result.","overview",[11,29,30],"email-delivery","report-layouts",{"path":32,"title":33,"description":34,"type":8,"topics":35,"kind":12},"\u002Fautomating-reporting-workflows\u002Fautomating-excel-online-with-microsoft-graph\u002Frun-a-report-when-an-excel-file-changes-in-onedrive","Run a Report When an Excel File Changes in OneDrive","Trigger a report as soon as someone saves a workbook in OneDrive or SharePoint, instead of on a fixed schedule: poll the file's cTag cheaply, use the Graph delta query to find every changed workbook in a folder, or receive webhook notifications and answer Microsoft's validation handshake — with debouncing so a burst of autosaves runs the report once, and the code tested against mocks.",[36,11],"excel-online",{"path":38,"title":39,"description":40,"type":8,"topics":41,"kind":12},"\u002Fautomating-reporting-workflows\u002Femailing-excel-reports-with-smtplib\u002Fsend-report-emails-at-each-recipients-local-time","Send Report Emails at Each Recipient's Local Time","Deliver a report email at 08:00 in each recipient's own time zone from one scheduled Python job: keep an IANA time zone per recipient in the distribution list, run the job hourly, decide who is due with zoneinfo, skip local weekends and holidays, record sends so nobody gets the report twice, and check the logic across daylight saving changes.",[29,11],{"path":43,"title":44,"description":45,"type":8,"topics":46,"kind":12},"\u002Fautomating-reporting-workflows\u002Ferror-handling-and-logging-in-excel-automation\u002Fdetect-a-scheduled-report-that-did-not-run","Detect a Scheduled Report That Did Not Run","Catch the failure that error handling cannot: a report job that never started. Check each report's output against its schedule — the last time it should have run plus a grace period — and send heartbeat pings to an external monitor that alerts when a ping is late, with start, success and failure signals and a freshness sheet for humans.",[47,11],"reliable-jobs",{"path":49,"title":50,"description":51,"type":8,"topics":52,"kind":12},"\u002Fautomating-reporting-workflows\u002Ferror-handling-and-logging-in-excel-automation\u002Fprevent-overlapping-runs-of-an-excel-report-job","Prevent Overlapping Runs of an Excel Report Job","Stop a scheduled report from starting while the previous run is still writing the workbook. Take an operating-system lock at the start of the job, skip or wait when another run holds it, record who holds it, use one lock per report so unrelated jobs still run in parallel, and choose a different lock when jobs run on more than one machine.",[47,11],{"path":54,"title":55,"description":56,"type":8,"topics":57,"kind":12},"\u002Fautomating-reporting-workflows\u002Ferror-handling-and-logging-in-excel-automation\u002Fskip-a-report-when-the-input-file-has-not-changed","Skip a Report Run When the Input File Has Not Changed","Stop a scheduled Excel report from rebuilding and resending the same numbers — fingerprint the input workbook so re-saves without real changes are ignored, check file metadata first to avoid reading large files, record the fingerprint only after a successful run, skip files that are still being written, and alert when the input goes stale.",[47,11],{"path":59,"title":60,"description":61,"type":62,"topics":63,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron","Scheduling Python Excel Scripts with Cron","Run Python Excel report scripts unattended with cron: write a robust generator, decode crontab syntax, invoke the venv Python directly, log, and prevent overlap.","guide",[11],{"path":65,"title":66,"description":67,"type":8,"topics":68,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fbackfill-excel-reports-for-past-dates","Backfill Excel Reports for Past Dates with Python","Regenerate a daily or monthly report for a range of past dates — after a bug fix, a missed week or a new report that needs history. Make the report take an as-of date instead of reading the clock, give it a date-range command line, skip what already exists, keep going past failures, rerun only what failed, and never email anyone during a backfill.",[11,47],{"path":70,"title":71,"description":72,"type":8,"topics":73,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fchoose-a-scheduler-for-python-excel-reports","Choose a Scheduler for Python Excel Reports","Cron, systemd timers, Task Scheduler, launchd, APScheduler, Celery beat, GitHub Actions, Airflow, Prefect, Lambda, Azure Functions, Cloud Run jobs and Kubernetes CronJobs compared for running Excel reports: where each runs, what it does about missed runs, retries, history and alerts, and a scheduler-agnostic script design that keeps the choice reversible.",[11,74],"choosing-libraries",{"path":76,"title":77,"description":78,"type":8,"topics":79,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Forchestrate-excel-reports-with-apache-airflow","Orchestrate Excel Reports with Apache Airflow","Turn a scheduled Excel script into a DAG: importable report functions, storage keys through XCom, a deferrable sensor for upstream data, and logical dates that make reruns safe.",[11],{"path":81,"title":82,"description":83,"type":8,"topics":84,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Forchestrate-excel-reports-with-dagster","Orchestrate Excel Reports with Dagster","Run an Excel reporting pipeline as Dagster software-defined assets: read the source workbook, clean it and write the report as separate assets, pass the output folder in as a resource, partition by month for backfills, validate with asset checks, schedule the job, and test it all in-process with materialize.",[11],{"path":86,"title":87,"description":88,"type":8,"topics":89,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Forchestrate-excel-reports-with-prefect","Orchestrate Excel Reports with Prefect","Turn a report script into a Prefect flow: tasks for extract, build and publish, automatic retries for the flaky steps, a report date as a parameter so reruns and backfills are one command, failure hooks that alert someone, and a cron schedule served by a long-running process or a work pool — all testable locally.",[11,47],{"path":91,"title":92,"description":93,"type":8,"topics":94,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-a-python-excel-report-in-docker","Run a Python Excel Report in Docker","Containerise a reporting job: a small Dockerfile, pinned dependencies, timezone and locale, mounted volumes for input and output, secrets, and scheduling the container.",[11,47],{"path":96,"title":97,"description":98,"type":8,"topics":99,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-a-python-excel-report-in-github-actions","Run a Python Excel Report in GitHub Actions","Schedule a reporting job without a server — a cron workflow, pinned dependencies, secrets, LibreOffice for PDF, artifacts, and the timezone and skew details that bite.",[11],{"path":101,"title":102,"description":103,"type":8,"topics":104,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-a-report-on-the-last-business-day-of-the-month","Run a Report on the Last Business Day of the Month","Cron cannot say \"the last working day of the month\", and a plain month-end offset forgets public holidays. Schedule the job every weekday and let Python decide: find the last business day with numpy and a holiday calendar, handle the nth business day for close reporting, use the business's time zone, and catch up if the server was down on the day.",[11,105],"dates-and-times",{"path":107,"title":108,"description":109,"type":8,"topics":110,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-an-excel-report-as-a-kubernetes-cronjob","Run an Excel Report as a Kubernetes CronJob","Schedule a containerised Python Excel report on a Kubernetes cluster: a CronJob manifest with a time zone, no overlapping runs, a deadline for late starts, retries and a hard time limit, credentials from a Secret, output to object storage, clean-up of finished jobs, a strict schema check before applying, and manual test runs.",[11,47],{"path":112,"title":113,"description":114,"type":8,"topics":115,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-an-excel-report-in-aws-lambda","Run a Python Excel Report in AWS Lambda","Build an Excel report in an AWS Lambda function and save it to S3 on a schedule — a handler that works in memory, a package that fits Lambda's size limits, memory and timeout settings that suit pandas, an EventBridge Scheduler rule in local time, retries that do not produce duplicate reports, and tests that run without an AWS account.",[11,116],"publishing",{"path":118,"title":119,"description":120,"type":8,"topics":121,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-an-excel-report-in-azure-functions","Run an Excel Report in Azure Functions","Schedule a Python Excel report as an Azure Function: a timer trigger with a six-field NCRONTAB schedule, the workbook built in memory and written to Blob Storage through an output binding, a retry policy, time zones and execution time limits, local testing of the handler and its bindings, and deployment with Core Tools.",[11,116],{"path":123,"title":124,"description":125,"type":8,"topics":126,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-an-excel-report-on-google-cloud-run-jobs","Run an Excel Report on Google Cloud Run Jobs","Package a Python Excel report as a container and run it on a schedule with Cloud Run jobs and Cloud Scheduler: a slim image, a script that exits with a meaningful status, parallel tasks that split work by CLOUD_RUN_TASK_INDEX, retries and timeouts, a service account instead of keys, and a local test with Docker before anything is deployed.",[11,116],{"path":128,"title":129,"description":130,"type":8,"topics":131,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Frun-python-excel-script-on-windows-task-scheduler","Run a Python Excel Script on Windows Task Scheduler","Register a Python Excel report with Windows Task Scheduler: a self-contained generator, schtasks \u002FCreate triggers, the venv interpreter, a .bat wrapper, and logging.",[11],{"path":133,"title":134,"description":135,"type":8,"topics":136,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fschedule-a-python-excel-script-on-macos-with-launchd","Schedule a Python Excel Script on macOS with launchd","Run a Python report on a Mac on a schedule the way macOS intends: a launch agent property list generated and checked with plistlib, StartCalendarInterval for weekly and weekday schedules, the virtualenv's Python by absolute path, logs to files, what happens when the Mac was asleep, privacy permissions for Documents and Desktop, and loading, testing and removing the job with launchctl.",[11],{"path":138,"title":139,"description":140,"type":8,"topics":141,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fschedule-an-excel-report-with-systemd-timers","Schedule an Excel Report with systemd Timers","Run a Python Excel report on a Linux server with a systemd service and timer instead of cron — a oneshot service with its own working directory and environment file, calendar expressions checked before deployment, catch-up runs after downtime, logs in the journal, failure status you can query and an OnFailure alert hook.",[11],{"path":143,"title":144,"description":145,"type":8,"topics":146,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fschedule-excel-reports-with-celery-beat","Schedule Excel Reports with Celery Beat","Run recurring Excel reports inside an application that already uses Celery: a report task with automatic retries and time limits, a beat schedule with crontab entries in the right time zone, the rule that exactly one beat process may run, testing the task with a real in-process worker, and database-backed schedules people can edit.",[11,147],"web-apps",{"path":149,"title":150,"description":151,"type":8,"topics":152,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fschedule-recurring-excel-reports-with-apscheduler","Schedule Recurring Excel Reports with APScheduler","Schedule recurring Excel reports inside Python with APScheduler: a BlockingScheduler, cron and interval triggers, misfire handling, overlap prevention, and timezones.",[11],{"path":154,"title":155,"description":156,"type":8,"topics":157,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fschedule-reports-correctly-across-time-zones-and-dst","Schedule Reports Correctly Across Time Zones and DST","Keep an 08:00 Excel report at 08:00 local time all year: why a UTC cron entry drifts by an hour when daylight saving starts and ends, time-zone-aware schedules in systemd, cronie, Kubernetes and Python, the skipped and repeated hours to avoid, a guard that works on UTC-only schedulers, and report periods that are 23 or 25 hours long.",[11,105],{"path":159,"title":160,"description":161,"type":8,"topics":162,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Ftrigger-an-excel-report-from-a-webhook","Trigger an Excel Report from a Webhook","Build an Excel report the moment something happens instead of on a timer: a small FastAPI endpoint that receives a webhook, verifies its HMAC signature and timestamp, ignores duplicate deliveries, answers within milliseconds with 202 Accepted, and builds the workbook in the background — tested end to end with FastAPI's test client.",[11,147],{"path":164,"title":165,"description":166,"type":8,"topics":167,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fwait-for-upstream-data-before-running-a-report","Wait for Upstream Data Before Running a Report","Stop a scheduled Excel report from running on yesterday's data: before building, check that every input is ready — an export file dated today and finished, a marker file, a database load-status row — poll with growing intervals until a deadline, and then either run, or send a clear \"data is late\" notice instead of a wrong report. Tested with a simulated clock.",[11,47],{"path":169,"title":170,"description":171,"type":8,"topics":172,"kind":12},"\u002Fautomating-reporting-workflows\u002Fscheduling-python-excel-scripts-with-cron\u002Fwatch-a-folder-and-process-new-excel-files","Watch a Folder and Process New Excel Files with Python","Process each workbook as soon as it lands in a drop folder. Watch the folder with watchdog, ignore Excel's lock and temporary files, wait until a file has finished copying, hand files to a single worker through a queue, move them to processed or failed folders, pick up anything that arrived while the watcher was down, and poll instead on network shares.",[11,173],"sheets-and-files",{"path":175,"title":176,"description":177,"type":8,"topics":178,"kind":12},"\u002Fautomating-reporting-workflows\u002Fserving-excel-files-from-python-web-apps\u002Freturn-an-excel-file-from-aws-lambda-through-api-gateway","Return an Excel File from AWS Lambda Through API Gateway","Serve a generated Excel workbook as a download from an AWS Lambda function behind API Gateway: build the file in memory, return it base64-encoded with isBase64Encoded, the right headers and filename, the extra binary media type setting a REST API needs, validation of query parameters, the 6 MB response limit and a pre-signed S3 redirect for bigger files, tested locally with event dictionaries and moto.",[147,11],{"path":180,"title":181,"description":182,"type":8,"topics":183,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fautomating-excel-with-com-and-pywin32\u002Frun-excel-com-automation-from-task-scheduler","Run Excel COM Automation from Task Scheduler Without a Logged-In User","Why a pywin32 script that drives Excel works when you run it by hand and fails or hangs from Task Scheduler — session 0, the missing systemprofile Desktop folder, DCOM identity, dialogs nobody can click — and the setups that work, plus how to avoid needing Excel at all.",[184,11,185],"com-automation","troubleshooting",{"path":187,"title":188,"description":189,"type":190,"topics":191,"kind":12},"\u002Fgetting-started-with-python-excel-automation\u002Fchoosing-a-python-excel-library\u002Fpython-vs-power-automate-for-report-workflows","Python vs Power Automate for Report Workflows","Compare a Python script with a Power Automate flow for recurring Excel report workflows: triggers and scheduling, working with Excel data, volume and speed, error handling, testing and version control, licensing and who maintains it — and how the two combine, with Python doing the processing and a flow doing the delivery.","comparison",[74,11],1790972052271]