Many funding agencies require a list of co-authors in the past n years. Is there an easier way to do this than to find all of my papers and copy and paste the names and institutions?
As with most other administrative data, it's far easier to maintain this information than to rebuild it from scratch every time you need it.
Maintain a spreadsheet with a complete list of your collaborators, including name, affiliation, ORCID, contact info, and most recent collaboration date for each one. Keep this spreadsheet in the same directory where you maintain your CV.
If you're lucky enough to have lots of collaborators already, setting up the initial spreadsheet will take significant time. Better to invest that time only once.
Every time you submit a paper or grant proposal, spend 5–10 minutes adding any new collaborators and updating your information for collaborators already listed.
Each time you need to submit a list of conflicts, extract the collaborators recent enough to create a conflict, in the precise format the agency requires. Different agencies define conflicts differently, so if you plan to submit proposals to more than one agency, I don't recommend removing anyone ever.
If your agency is like NSF, it will require a list of names and current affiliations of your recent collaborators. So every time you submit a proposal, you need to double-check that everyone's listed affiliation is current. A list of affiliations at the time of your collaboration, no matter how you obtain it, is not sufficient. People move; your conflicts follow them. (People also occasionally change names, but that's must less common.)
In combination with the answer by @jeffE above - keeping a spreadsheet has been handy, necessary and practical, I found a bit of R code that can query a list of publications and then a list of co-authors for each publication.
library(dplyr) library(scholar) #install.packages('scholar') my_scholar_id <- ('XYZDPDQ') pubs <- get_publications(my_scholar_id) # n_deep means only get my co-authors, not the co-authors of my co-authors coauthor_network <- get_coauthors(my_scholar_id, n_coauthors = 1000, n_deep = 1) # may need to manually filter out conferences that don't count coauthors2018 <- pubs %>% filter(year >=2018) %>% rowwise() %>% summarise(authors = get_complete_authors(my_scholar_id, pubid,initials = FALSE)) coauthors <- data.frame(authors = strsplit(coauthors2018$authors, split = ','))