I don’t think A or B work here since they’d only make users able to use the service account, not impersonate real user data. C is tempting but giving the app raw admin creds is a big no from Google’s best practices. D is right, service account with domain-wide delegation is designed exactly for this kind of scenario. If I missed something, let me know.
D is the right pick here. Service account with domain-wide delegation lets your app access user data (like Drive) without needing end-user credentials, fits Google best practices. A/B would only give service account permissions but can't impersonate users. C is a red herring-using an admin account directly isn't recommended for automation or security. Pretty sure about D, but let me know if I've missed something important.