如何使用Google Apps脚本从用户驱动器中检索文件?我试过:
var fetchURL = 'file:///C://Users//Gigabyte//Pictures//file_name.JPG';
var image = UrlFetchApp.fetch(fetchURL).getBlob();
我试过用转义符代替斜线。
'file:%2F%2F%2FC:%2FUsers%2FGigabyte%2FPictures%2Ffile_name.JPG'
我试过不同的后斜线和前斜线。到目前为止运气不好。
或者也许我做这件事的方式不对。也许我需要以其他方式获取文件blob?
我确实在网站上找到了关于如何从用户驱动器获取文件的信息:堆栈溢出理解
但Caja似乎确实去掉或阻止了一个新的blob的定义。
我在这个网站上找到了这个代码:HTML5 Rocks
// Check for the various File API support.
if (window.File && window.FileReader && window.FileList && window.Blob) {
alert('Great success! All the File APIs are supported.');
} else {
alert('The File APIs are not fully supported in this browser.');
}
当我在Chrome浏览器中从Notepad++运行该代码时,结果很好。当我在Chrome中的谷歌应用程序脚本中运行该代码时,出现了问题。所以显然有一种上传文件的方法。它总是发生。但我不能通过谷歌应用程序脚本中的HTML服务来完成。我可以触发谷歌应用程序脚本UI,它将从用户计算机上传一个文件到我的谷歌驱动器。我想这是我唯一的选择。我不知道在HTML页面中嵌入UI的方法。
为了让你的应用程序脚本的用户能够将文件从他们的计算机上传到你的谷歌硬盘,这里有一个关于如何做到这一点的堆栈溢出解释。
使用HTML服务上传文件
我原以为没有任何方法可以用HTML服务上传文件,但确实有。我花了很多时间在UI服务createFileUpload()
上,所有这些都是浪费时间。
不可能。你的gas代码运行在谷歌服务器上,而不是你的浏览器/计算机上。您唯一的希望是使用htmlService客户端javascript,但我怀疑您可能需要的html5功能(我怀疑是否存在读取文件路径的功能)可能由于"caja"限制而无法工作。如果它总是一个图像,并且你可以将其加载到浏览器上,你也可以使用画布来捕获数据url,但我再次怀疑它是否可以从htmlService 完成