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

React中如何导入DriveApp与ImgApp?附图片尺寸获取代码疑问

关于React中使用DriveApp/ImgApp的说明

DriveApp 和 ImgApp 是Google Apps Script(GAS)专属的服务器端服务,它们只能在GAS的运行环境中使用,无法直接在React这类前端浏览器环境里导入或调用——你的代码片段本身是GAS环境下的写法,放到React项目里会直接报错。

下面给你两种可行的替代方案:

方案1:直接调用Google Drive REST API获取图片尺寸

不需要下载图片Blob,通过Drive API的文件元数据接口就能直接拿到图片的宽高信息:

  1. 先在Google Cloud控制台启用Drive API,并获取API密钥(或OAuth凭据,根据你的权限需求选择)
  2. 在React中发起HTTP请求调用接口:
async function getImageSize(driveId, apiKey) {
  try {
    const res = await fetch(
      `https://www.googleapis.com/drive/v3/files/${driveId}?fields=imageMediaMetadata(width,height)&key=${apiKey}`
    );
    const fileData = await res.json();
    if (!fileData.imageMediaMetadata) {
      throw new Error("目标文件不是图片,或无尺寸信息");
    }
    return {
      width: fileData.imageMediaMetadata.width,
      height: fileData.imageMediaMetadata.height
    };
  } catch (err) {
    console.error("获取尺寸失败:", err);
    return null;
  }
}

方案2:把GAS逻辑封装成Web App,React调用接口

如果一定要复用你原来的GAS代码逻辑,可以把它部署成GAS Web App,再让React通过HTTP请求调用:

第一步:编写并部署GAS Web App

在Google Apps Script编辑器中编写以下代码:

function doGet(e) {
  const driveId = e.parameter.driveId;
  try {
    const blob = DriveApp.getFileById(driveId).getBlob();
    const sizeInfo = ImgApp.getSize(blob);
    return ContentService.createTextOutput(JSON.stringify({
      width: sizeInfo.width,
      height: sizeInfo.height
    })).setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    return ContentService.createTextOutput(JSON.stringify({
      error: err.message
    })).setMimeType(ContentService.MimeType.JSON);
  }
}

部署时选择“任何人,甚至匿名”(根据你的权限需求调整),复制生成的Web App URL。

第二步:React中调用该Web App

async function getImageSize(driveId) {
  const webAppUrl = "你的GAS Web App部署URL";
  try {
    const res = await fetch(`${webAppUrl}?driveId=${driveId}`);
    const data = await res.json();
    if (data.error) throw new Error(data.error);
    return { width: data.width, height: data.height };
  } catch (err) {
    console.error("获取尺寸失败:", err);
    return null;
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:15:31