Publicado en www.peopleperhour.com 24 mar 2025
Original Project Overview
We maintain a Google Sheets database of academic figures, each with the following columns:
Name
Surname
Email
University
Subject
We need to automatically fetch the latest two publications for each individual using:
Google Scholar (via SerpAPI’s Scholar API)
ORCID (public API)
OpenAlex (public API)
The results must be inserted back into specified columns in the Google Sheet (F–Q), updated daily or on-demand.
Key Challenges
Sorting by Latest in Google Scholar
By default, Scholar returns top-cited or most-relevant articles, not necessarily newest.
Must force a date sort (&sort=pubdate) or a separate fallback approach.
Handling Ambiguous Names
Multiple authors can share the same name.
Potentially need to detect and filter out mismatched results.
Ensuring Valid Data Types
Google Sheets rejects structured or non-string data.
Must parse out just the string or numeric year/date.
Rate Limits and API Keys
Respect daily or per-minute call limits for SerpAPI, ORCID, OpenAlex.
Must handle errors gracefully.
Automation
Should run as a script from a server or cloud environment (we have console access).
Possibly on a schedule (e.g., daily cron job).
Responsibilities
Set up a robust Python script or application that:
Authenticates to Google Sheets (using service account credentials). DONE
Retrieves our researcher data (Name, Surname, Email, University, Subject) from the “Pubs” or “Topics” sheet.
Calls SerpAPI’s Google Scholar endpoint with date-sorted queries, including fallback logic if no results appear.
Calls ORCID’s public API (optional, can parse structured date fields carefully).
Calls OpenAlex’s public API to fetch the newest two works by each author.
Inserts the results (title, year/date) back into the correct columns in the Google Sheet (F–Q).
Handle name disambiguation or minimal validation so we don’t store obviously incorrect publications.
Deliverables
Python script (or small app) that can be triggered manually or on a schedule.
Successful write-back of 2 publications each from Google Scholar, ORCID, and OpenAlex (6 total) into the correct columns.
Error handling: If no results, store “N/A” or a sensible fallback.
Instructions on setup, environment variables, and usage (e.g., README).
What Still Needs To Be Done
1. Fix Google Scholar Fetch
Main Problem: You're getting most cited or incorrect results.
Needs Fixing:
Ensure sort=pubdate is actually respected in SerpAPI query.
Add fallback logic: if pubdate query fails (returns nothing), retry without it.
Clean up irrelevant results using basic validation (e.g., check university or subject in result string).
2. OpenAlex Improvements
Currently works for some authors.
But still needs name disambiguation logic:
Validate author’s affiliation or match on email (if possible).
Fallback if OpenAlex returns wrong author.
3. ORCID Integration (Optional)
You paused this due to structured date errors.
If you want to include it again later:
Parse structured publication-date fields into simple strings.
Validate the correct ORCID author before fetching works.
4. Error Handling
Improve logging to show:
Which step failed (e.g. API call, parsing, writing to sheet).
Show why (e.g., "no publications found", "mismatched data", "bad year format").
Replace all "N/A" logic with something more transparent (e.g., "No match found for [X]").
5. Name Disambiguation Logic
Currently just using Name + University + Subject in the query.
Needs:
Smarter matching logic to avoid irrelevant or repetitive publications.
Maybe strip long names or fuzzy-match affiliations if exact match fails.
6. Cleaner Sheet Writes
Fix Google Sheets writing errors:
Avoid trying to write structured JSON (like ORCID publication-date objects).
Ensure all fields written are flat strings (title + year/date only).
7. Automation (Optional)
Set up to run automatically (cron job, server scheduler) if needed.
Add logging/output to file for record-keeping.
Ver más