google-apps-script - 无法使用 Apps 脚本将图像从 Google 云端硬盘添加到 Google 表单

标签 google-apps-script google-drive-api google-forms

我正在尝试以编程方式将图像从我的 Google 云端硬盘添加到 Google 表单。我可以通过使用 google 示例,使用对静态图像 URL 的引用来使其工作,例如:

var img = UrlFetchApp.fetch('https://www.google.com/images/srpr/logo4w.png');
form.addImageItem().setImage(img);

这工作正常。但我想引用我的 Google 云端硬盘帐户中的图片。

如果我尝试使用 Google 云端硬盘图像的图像共享链接,则会收到错误消息:

var img = UrlFetchApp.fetch("https://drive.google.com/open?id=0B_u2iAm1LaoZSHd1TTExcDFrbUU");
form.addImageItem().setImage(img);

ERROR: "Blob object must have an image content type for this operation."

如果我尝试通过文件的 ID 打开文件,则会收到不同的错误:

var img = DriveApp.getFileById("0B_u2iAm1LaoZSHd1TTExcDFrbUU");
form.addImageItem(img);

ERROR: "Could not add image, please wait a minute and try again."

我似乎找不到任何有关如何实现此目标或我做错了什么的文档。我尝试更改 Google 云端硬盘中图像的共享设置以使其公开。我尝试获取 Google 云端硬盘中图像的静态图像 URL,但似乎唯一可用的 URL 是共享 URL,该 URL 转到图像的保存/显示页面,而不是实际图像本身。

最佳答案

抱歉,我想我发布了错误的代码段,所以实际上我正在做的是:

var img = DriveApp.getFileById("a_valid_drive_file_id_here");
var imageItem = form.addImageItem();
imageItem.setImage(img);

并收到“无法添加图像,请稍等,然后重试。”错误。

但是,我想我现在已经回答了我自己的问题,上面的示例(通过 ID 获取文件并调用 setImage)确实适用于存储在 Google Drive 中的图像,但是如果图像太大,则会出现错误。不幸的是,API 似乎没有指定任何大小限制,并且错误消息不是很有用,而且也没有说明图像太大。

所以我不知道以这种方式添加的图像的大小限制是多少,但如果其他人也有同样的错误,请尝试减小图像文件的大小。

关于google-apps-script - 无法使用 Apps 脚本将图像从 Google 云端硬盘添加到 Google 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37182861/

相关文章:

node.js - 如何等待谷歌电子表格调用并将其设置在 for 循环内

使用 OAuth 2.0 的 Java 和 Google Spreadsheets API 授权

ruby-on-rails - 如何使用 ruby​​ 中的 Google Drive api 获取 Google Drive 文件夹中所有文件的列表

google-sheets - Google 表单上的相关下拉列表

forms - 在提交事件中使用 Google App 脚本获取 Google 表单中特定问题/项目的值

html - 如何使用 Google 电子表格作为后端创建 HTML 数据输入表单

google-apps-script - 如何为共享云端硬盘发布云端硬盘应用

google-apps-script - 如何使用 Google 相册 API 方法 : mediaItems. 在 Google 应用脚本中搜索电子表格

google-apps-script - 我无法在具有编辑权限的 Google 表格上创建脚本

google-apps-script - 列出 Google 应用程序脚本项目