You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Firebase数据库连接到Google Apps Script,实现Firebase图片同步至Google Drive

实现Google Apps Script连接Firebase并同步图片到Google Drive的方案

第一步:获取Firebase认证凭据

你不需要在Firebase数据库中找现成的OAuth token,通过服务账号生成凭据即可:

  • 进入Firebase控制台的对应项目,打开项目设置页面,切换到「服务帐号」标签
  • 找到「Firebase Admin SDK」板块,点击「生成新的私钥」,下载JSON格式的密钥文件,后续认证只需用到该文件内的client_email和private_key两个字段

第二步:Google Apps Script端认证逻辑配置

先在GAS项目中导入OAuth2官方库,库ID为1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF,再编写如下认证代码:

// 替换为你自己的配置参数
const CONFIG = {
  firebase_client_email: "JSON密钥里的client_email字段值",
  firebase_private_key: "JSON密钥里的private_key字段值,保留完整的头尾格式",
  firebase_storage_bucket: "你的Firebase存储桶名称,格式为xxx.appspot.com",
  drive_target_folder_id: "目标Google Drive文件夹的ID"
}

// 生成Firebase访问用OAuth临时token
function getFirebaseToken() {
  const authService = OAuth2.createService("FirebaseAuth")
    .setTokenUrl("https://oauth2.googleapis.com/token")
    .setIssuer(CONFIG.firebase_client_email)
    .setPrivateKey(CONFIG.firebase_private_key)
    .setScope("https://www.googleapis.com/auth/devstorage.read_only https://www.googleapis.com/auth/drive");
  if (authService.hasAccess()) return authService.getAccessToken();
  throw new Error("认证失败:" + authService.getLastError());
}

第三步:实现图片拉取与上传逻辑

通过Firebase Storage的REST API拉取图片,再上传到Google Drive:

function syncImages() {
  const token = getFirebaseToken();
  // 拉取Firebase存储中的文件列表
  const listRes = UrlFetchApp.fetch(`https://firebasestorage.googleapis.com/v0/b/${CONFIG.firebase_storage_bucket}/o`, {
    headers: { Authorization: `Bearer ${token}` }
  });
  const fileList = JSON.parse(listRes.getContentText()).items || [];
  const targetFolder = DriveApp.getFolderById(CONFIG.drive_target_folder_id);

  fileList.forEach(fileItem => {
    // 过滤非图片文件,可按需调整匹配规则
    if (!fileItem.contentType.startsWith("image/")) return;
    // 下载图片二进制内容
    const imageRes = UrlFetchApp.fetch(`https://firebasestorage.googleapis.com/v0/b/${CONFIG.firebase_storage_bucket}/o/${encodeURIComponent(fileItem.name)}?alt=media`, {
      headers: { Authorization: `Bearer ${token}` }
    });
    // 上传到Google Drive
    const imageBlob = imageRes.getBlob().setName(fileItem.name);
    targetFolder.createFile(imageBlob);
  });
}

注意事项

  • 首次运行脚本需要按提示完成GAS的权限授予,授权成功后即可正常执行
  • 如果存储的图片数量较多,可自行添加分页逻辑拉取文件列表,避免单次请求超限
  • 服务账号私钥属于敏感信息,不要泄露到公开可访问的环境中

内容的提问来源于stack exchange,提问作者dtETSmtl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:03:02