【发布时间】:2014-08-06 19:24:10
【问题描述】:
我编写了一个脚本来将电子邮件图像附件保存到谷歌驱动器中。但我每天收到超过 250 个(安全摄像头快照)。
脚本运行良好,但我收到以下消息:
一天服务调用次数过多:docslist create
循环查找线程、消息和附件后,我将附件保存为:
file = subfolder.createFile(att[z]);
是否有其他方法可以让我超越 Apps 脚本限制来保存文件?
【问题讨论】:
我编写了一个脚本来将电子邮件图像附件保存到谷歌驱动器中。但我每天收到超过 250 个(安全摄像头快照)。
脚本运行良好,但我收到以下消息:
一天服务调用次数过多:docslist create
循环查找线程、消息和附件后,我将附件保存为:
file = subfolder.createFile(att[z]);
是否有其他方法可以让我超越 Apps 脚本限制来保存文件?
【问题讨论】:
答案就在问题中:quota limit for a consumer account 是 250,除了获得另一种类型的帐户(请参阅上面链接中的配额)之外,没有办法解决这个问题。
您可以做的是将所有图像存储在一个文档中,每天一张。由于文档可以包含很多图片(我什至不知道有没有限制...'*)
使用起来可能更方便。
'* : this doc for example 是一个文档,它收集了 SO 用户以我几个月前放到网上的表格发布的图片,并且每天都在变大(截至今天超过 200 页,仍在增长;- )
编辑:按照您的评论:
您可以简单地使用 blob 将图像附加到文档中。下面的示例我从驱动器中获取 blob,但任何 blob 都可以完成这项工作。
function importImage() {
var image = DriveApp.getFilesByType(MimeType.JPEG).next().getBlob()
var doc = DocumentApp.getActiveDocument()
var inlineI = doc.appendImage(image);
var width = inlineI.getWidth();
var newW = width;
var height = inlineI.getHeight();
var newH = height;
var ratio = width/height;
Logger.log('w='+width+'h='+height+' ratio='+ratio);
if(width>640){
newW = 640;
newH = parseInt(newW/ratio);
}
inlineI.setWidth(newW).setHeight(newH)
doc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW');
doc.appendHorizontalRule();
doc.saveAndClose();
}
【讨论】:
doc.getChild(0).asParagraph().appendInlineImage(image.getBlob()) ?谢谢。会试试的。
不完全是问题的答案,而是解决问题的另一种方法(存储通过电子邮件收到的大量文件):
我最终使用 Google Apps 脚本将文件上传到单独的服务器,通过 Class UrlFetchApp 使用文件作为有效负载的 POST。
【讨论】: