如何使用GAS预览位于Google云端硬盘上的图片

时间:2014-06-22 16:43:29

标签: google-apps-script preview

我想显示从列表或树中选择的文件(位于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)。一个小例子当然会受到赞赏。

1 个答案:

答案 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;
}

test here

enter image description here

编辑:

由于上面的代码似乎不适用于未公开共享的文件(不确定),因此这是另一种获取结果(测试应用程序更新)的方法,该方法适用于与任何人共享的文件链接可以查看'。

请注意,这是不符合逻辑的,因为应用程序已部署为运行"因为我"并且任何人都可以访问,甚至匿名" ...所以从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;
}