我想显示从列表或树中选择的文件(位于Google云端硬盘上)的预览。
如果我尝试显示图像文件,图像不会显示(尽管它是正确的文件ID)
function doGet()
{
var app = UiApp.createApplication().setTitle("Image");
var urlDrive = 'https://drive.google.com/file/d/0BxjtiwHnjnkrUVFKaWVaM3BNZjg';
var urlWeb = 'http://cdn.ndtv.com/tech/images/gadgets/google_webfonts_ap.jpg';
// var url = urlWeb; // works
var url = urlDrive; // Doe NOT work
var image = app.createImage(url).setHeight(200);
var panel = app.createVerticalPanel();
panel.add(image);
app.add(panel)
return app;
}
该示例显示将网址更改为Google云端硬盘上不存在的文件。
一般情况下,我想知道是否可以使用GAS在面板中预览文件(包括msWord,msExcel和pdf)。一个小例子当然会受到赞赏。
答案 0 :(得分:0)
问题在于你获取网址的方式。
在这种情况下唯一有效的网址是您在使用"详细信息"检查图像文件时可以看到的网址。在您的驱动器浏览器窗口中。
它实际上是以不同的方式构建,但包含ID,因此很容易重新构建...
这是怎么回事:
function doGet(){
var app = UiApp.createApplication().setTitle("Image");
var imgFile = DriveApp.getFilesByName('Chrysanthemum.jpg').next()
ID = imgFile.getId();
Logger.log(ID);
var imgUrl = 'https://googledrive.com/host/'+ID
var image = app.createImage(imgUrl).setHeight(200);
var panel = app.createVerticalPanel();
panel.add(image);
app.add(panel)
return app;
}
由于上面的代码似乎不适用于未公开共享的文件(不确定),因此这是另一种获取结果(测试应用程序更新)的方法,该方法适用于与任何人共享的文件链接可以查看'。
请注意,这是不符合逻辑的,因为应用程序已部署为运行"因为我"并且任何人都可以访问,甚至匿名" ...所以从G Drive pov我打开文件...去了解为什么它表现得像那样; - )
我在一个匿名会话中测试过它。
我希望这个解决方案适合你。
function doGet(){
var app = UiApp.createApplication().setTitle("Image");
var imgFile = DriveApp.getFilesByName('Chrysanthemum.jpg').next()
var ID = imgFile.getId();
Logger.log(ID);
var imgUrl = 'https://drive.google.com/uc?export=view&id='+ID
// var imgUrl = 'https://googledrive.com/host/'+ID; //for public files apparently
var image = app.createImage(imgUrl).setHeight(200);
var panel = app.createVerticalPanel();
panel.add(image);
app.add(panel)
return app;
}