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

Google Sheet用Google Script导入Google Photos图生成PDF失败求助

问题根源

Google Photos生成的lh3.googleusercontent.com前缀链接默认带访问权限校验,Google Sheet后台渲染PDF的进程没有对应权限访问非公开的Google Photos资源,因此无法加载图片,而公开的外网图片没有权限校验就可以正常显示。

可行解决方案

方案1:调整Google Photos图片权限与链接格式

  • 将所有需要使用的平面图在Google Photos中开启链接分享,设置为「所有知道链接的人可查看」
  • 修改原图片链接后缀:将默认链接末尾的尺寸参数(如=w200-h200)改为=w1600,或直接删除所有后缀参数仅保留基础链接,部分场景下即可被PDF渲染进程正常识别。

方案2:转存到Google Drive使用兼容链接(稳定性最高)

  • 将所有平面图上传到Google Drive共享文件夹,设置文件夹权限为「组织内所有人可查看」或「所有知道链接的人可查看」
  • 提取Drive文件ID:Drive文件分享链接格式为https://drive.google.com/file/d/[文件ID]/view,复制其中d/和/view中间的字符串即为文件ID
  • 将IMAGE公式中的链接替换为https://drive.google.com/uc?export=view&id=[你的文件ID],该格式可被Google Sheet PDF渲染功能正常识别。

方案3:使用脚本直接插入图片(无需修改分享权限)

如果不想调整现有图片的存储位置和权限,可以将原代码中使用IMAGE公式的逻辑替换为直接插入图片Blob,示例修改代码如下:

// Récupération de l'ensemble des plans dans tPlansZones
var feuillePlans = classeur.getSheetByName("Plans");
var tPlansZones = feuillePlans.getRange("E2:F").getValues();
for (let i = 0; i <tPlansZones.length; i ++){
// Si le plan correspond, enregistrement de l'url de celui-ci
  if (tPlansZones[i][0]==zoneAdd){
    urlPlan = tPlansZones[i][1];
    break;
  } else {
    continue;
  }
}
// 替换原公式插入逻辑,直接拉取图片Blob插入
var imageBlob = UrlFetchApp.fetch(urlPlan, {
  headers: {
    Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
  }
}).getBlob();
// 插入到B21位置(列数从1开始计数,B=2,行数21)
var insertedImage = nouveauSheet.insertImage(imageBlob, 2, 21);
// 调整图片尺寸适配合并后的B21:H45区域,可根据实际需求调整宽高数值
insertedImage.setWidth(600).setHeight(300);
// 合并单元格
var fusionPlan = nouveauSheet.getRange("B21:H45").setHorizontalAlignment("center");
fusionPlan.merge();

该方法直接调用脚本的OAuth权限拉取图片,无需调整图片公开权限,生成PDF时图片会直接嵌入文件,稳定性更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:27:03