无法使用Apps脚本将Google云端硬盘中的图片添加到Google表单中

时间:2016-05-12 09:32:40

标签: google-apps-script google-drive-api google-form

我正在尝试以编程方式将Google云端硬盘中的图片添加到Google表单中。我可以使用google示例(例如:

)使用对静态图片网址的引用来使其工作
var img = UrlFetchApp.fetch('https://www.google.com/images/srpr/logo4w.png');
form.addImageItem().setImage(img);

这适用于o.k.但我想在我的Google云端硬盘帐户中引用图片。

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

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

错误:" Blob对象必须具有此图像内容类型   。操作"

如果我尝试按照它的ID打开文件,我会收到一个不同的错误:

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

错误:"无法添加图片,请稍等片刻再试一次。"

我似乎无法找到有关如何实现这一目标或我做错了什么的任何文档。我尝试更改Google云端硬盘中图片的共享设置,以便公开发布。我试图在Google云端硬盘中获取图像的静态图片网址,但似乎唯一可用的网址是共享网址,该网址会转到图片的保留/显示页面,而不是实际图片本身。

2 个答案:

答案 0 :(得分:3)

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

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

获取“无法添加图片,请稍等片刻再试一次。”错误。

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

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

答案 1 :(得分:1)

方法addImageItem不带参数。它只是添加了一个项目,用于保存要指定的图像。要指定该图像,请调用setImage,将 blob 作为参数传递。通过调用其getBlob方法从File对象获取blob。

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

我建议您仔细阅读FormImageItem课程文档。