I’m currently using the Google Drive node, but this issue exists for all Google nodes.
When using a Google service account and uploading a file, the file is owned by the service account and is not visible to anyone. It is not possible to transfer ownership to a user either because of outside domain restrictions.
In Drive, a workaround is to share a users folder with the service account email. Then the file will show up. However, it would be much better if the service account would impersonate a properly configured user to perform certain actions (upload, move, share, delete, etc…). Then the file is truly owned by the desired user, and no additional configuration on folders is required. Additionally, this approach is much better than having a user actually authenticate an OAuth session in n8n.
It seems this is possible. See: https://github.com/googleapis/google-auth-library-nodejs/issues/916
The answer appears here.
Essentially, what I think this would look like in the node for Drive (or Calendar, etc…) would be an addtional option in n8n to enter the impersonated user’s email address for the call. Assuming everything is configured properly in Google Cloud Platform, it should work.