AppScript通过API连接Firebase报错:TypeError: file.blob is not a function
问题解决:TypeError: file.blob is not a function
错误原因
你遇到的TypeError: file.blob is not a function是因为Google Apps Script的DriveApp.File对象中,获取文件Blob的正确方法是getBlob(),而非你代码里写的blob()。
修复后的代码
const CREDENTIALS_FILE_ID = "Your File ID"; const PROJECT_ID = "Project ID"; function getServiceAccountKey() { var file = DriveApp.getFileById(CREDENTIALS_FILE_ID); // 修正:使用getBlob()替代blob(),同时添加return返回解析后的JSON return JSON.parse(file.getBlob().getDataAsString()); } function testFunc(){ console.log(getServiceAccountKey()); } function getAccessToken() { var serviceAccount = getServiceAccountKey(); var tokenUrl = "https://www.googleapis.com/oauth2/v4/token"; var payload = { grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", assertion: createJWT(serviceAccount), }; var options = { method: "post", payload: payload, }; var response = UrlFetchApp.fetch(tokenUrl, options); var token = JSON.parse(response.getContentText()).access_token; return token; }
额外注意事项
- 原
getServiceAccountKey函数缺少return语句,即使修复Blob方法,testFunc也会输出undefined,因此必须添加return返回解析后的服务账号密钥JSON。 - 确保脚本已获得访问Drive文件的权限,否则会触发权限错误。
- 确认
createJWT函数已正确实现,否则getAccessToken会因找不到该函数报错。
内容的提问来源于stack exchange,提问作者Humphrey_wes
相关产品推荐
相关产品推荐

