如何用Google Apps Script将Google Drive中的图片发布到Facebook?
解决Google Apps Script上传Google Drive图片到Facebook的方法
Facebook Graph API的/photos端点支持multipart/form-data格式直接上传文件内容,你之前用的application/x-www-form-urlencoded仅适配公开URL场景,改成以下方式即可上传Drive中的图片:
步骤1:启用Google Drive API
在Google Apps Script编辑器中,点击「扩展」→「Apps Script API」,确保Drive API已启用;若未找到,进入「服务」选项卡,搜索并启用「Drive API」。
步骤2:修改上传函数
替换原有的postToFacebook函数,改为直接上传Drive图片的二进制数据:
function postToFacebookFromDrive(driveFileId, caption) { const pageAccessToken = getPageAccessToken(); const FACEBOOK_PAGE_ID = "你的页面ID"; // 替换为实际页面ID // 从Drive获取图片的Blob对象 const fileBlob = Drive.Files.get(driveFileId, {alt: 'media'}).getBlob(); var options = { 'method': 'post', 'muteHttpExceptions': true, 'payload': { 'source': fileBlob, 'caption': caption, 'published': true, 'access_token': pageAccessToken } }; const container = `https://graph.facebook.com/v17.0/${FACEBOOK_PAGE_ID}/photos`; var response = UrlFetchApp.fetch(container, options); Logger.log(response.getContentText()); }
关键说明
- 无需公开URL,通过
Drive.Files.get结合alt: 'media'获取图片二进制Blob,直接作为source参数传入payload。 - 当payload包含Blob对象时,Google Apps Script会自动将请求
Content-Type设为multipart/form-data,匹配Facebook API的文件上传要求。 - 确保脚本运行者拥有目标Drive图片的读取权限(共享文件需添加运行者为协作者)。
使用示例
调用函数时传入Drive图片的文件ID和文案即可:
postToFacebookFromDrive("你的Drive图片文件ID", "这是从Google Drive上传的图片");
内容的提问来源于stack exchange,提问作者Khnaz35
相关产品推荐
相关产品推荐

