Google Workspace插件能否无需文档特定授权获取当前文件ID?
问题解答
一、获取文件ID的其他方式
- 文件选择器(Picker API):引导用户通过Picker界面选择文件,无论使用
auth/drive还是auth/drive.file权限,Picker API都会返回选中文件的ID。 - Drive API文件列表接口:拥有
auth/drive权限时,可调用files.list接口,通过文件名、创建时间、所属文件夹等筛选条件定位目标文件,从返回结果中提取ID。 - 手动提取浏览器URL:用户在浏览器打开Drive文件时,URL格式类似
https://drive.google.com/file/d/{FILE_ID}/view,直接从URL中截取{FILE_ID}部分即可。 - Google Apps Script:在Google Docs/Sheets等编辑器中,通过内置脚本可直接调用
DocumentApp.getActiveDocument().getId()或SpreadsheetApp.getActiveSpreadsheet().getId()获取当前文件ID,只要脚本拥有对应权限。
二、为什么auth/drive权限无法在Event Objects中获取文件ID?
这是Event Objects的设计规则绑定了权限语义,和权限的访问能力无关:
auth/drive.file是单文件授权模式,用户明确批准应用访问某一特定文件,Event Objects会将该文件ID作为授权的关联标识返回。auth/drive是全局权限,应用可访问用户Drive内所有有权限的文件,但Event Objects的触发场景(如文件打开、编辑事件)针对单个文件时,文档明确规定仅在auth/drive.file授权下才会返回当前文件ID——这是字段返回规则的设定,而非权限能力的限制。
内容的提问来源于stack exchange,提问作者smallpepperz
相关产品推荐
相关产品推荐

