Google电子表格中Google驱动器中的参考文件

时间:2014-06-11 13:43:00

标签: google-sheets google-docs-api google-spreadsheet-api google-drive-api

我在Google云端硬盘中创建了一个文件夹,例如测试,并在其中放入3个文件

a.jpg, b.jpg, c.jpg

我希望在同一帐户下的Google电子表格中访问这些文件,例如生成图像文件的链接,有可能吗?

e.g。

 ColA     ColB
 a.jpg    [generate link to a.jpg in drive]
 a.jpg    [generate  link to b.jpg in drive]
 a.jpg    [generate  link to c.jpg in drive]

3 个答案:

答案 0 :(得分:2)

是的,可能。谷歌为“谷歌驱动器上的主机网站”提供详细说明。 基本上首先将文件夹共享为public,从其url复制文件夹id并创建一个新url googledrive.com/host/folderid/a.jpg

答案 1 :(得分:2)

使用GScripts,您可以使用以下功能来创建/修改文件:

这个创建一个新的电子表格,其中包含所有文件夹名称和所有相应的URL(无标题)

function mapAllFiles() { 
  var values = [];
  var folders = DriveApp.getFoldersByName("FOLDER_NAME");
  while (folders.hasNext()) {
    var folder = folders.next();
    var files = folder.getFiles();
    // Looping over all files in all folders with the given name
    while (files.hasNext()) {
      var file = files.next();
      Logger.log(file.getName());
      var fileInfo = [file.getName(), file.getDownloadUrl()];
      Logger.log(fileInfo);
      values.push(fileInfo);
      // values.push(file.getDownloadUrl());
    }
  }
  // To use an exiting spreadsheet
  // var sFile = DriveApp.getFilesByName("YOUR_SPREADSHEET_NAME");
  // var as = SpreadsheetApp.openById(sFile.next().getId());
  // Create a new spreadsheet
  var as = SpreadsheetApp.create("YOUR_SPREADSHEET_NAME");
  var sheet = as.getActiveSheet();
  // Fill in all values
  var range = sheet.getRange(1, 1, values.length, 2).setValues(values);
}

这个列出了电子表格中给定fileNames的URL,这些URL存在于文件夹

function mapListedFiles() { 
  var values = [];
  var folders = DriveApp.getFoldersByName("FOLDER_NAME");

  if (folders.hasNext()) {
    var folder = folders.next();

    var sFile = DriveApp.getFilesByName("YOUR_SPREADSHEET_NAME");
    var as = SpreadsheetApp.openById(sFile.next().getId());
    // var as = SpreadsheetApp.create("YOUR_SPREADSHEET_NAME");
    var sheet = as.getActiveSheet();
    var range = sheet.getRange(2,1,sheet.getDataRange().getLastRow(), 1).getValues();
    for (var i = 0; i < range.length-1; i++) {
      var files = folder.getFilesByName(range[i]);
      Logger.log(files);
      if (files.hasNext()) {
         var file = files.next();
         Logger.log(file.getName());
         Logger.log(file.getDownloadUrl());
        values.push([file.getDownloadUrl()]);
      } else {
        values.push(["MISSING"]);
      }
    }
    var range = sheet.getRange(2, 2, values.length, 1).setValues(values);
  }
}

答案 2 :(得分:1)

这是一种主要的方法(没有编程)。稍后,您可以以任何方式自动执行此过程。

  1. 使用Google Drive API :转到Google云端硬盘文件API示例(您可能需要在Google Developers门户网站上执行其他注册步骤):https://developers.google.com/drive/v2/reference/files/list#try-it
  2. 过滤文件夹中的所有文件:在“q”字段中输入字符串:

    '0B6eKcFRCDRT2NjRGbDYxODlTMFE' in parents and trashed = False

    其中0B6eKcFRCDRT2NjRGbDYxODlTMFE是图片所在文件夹的文档ID(您可以在Google云端硬盘网页界面导航到该文件夹​​时在网址中查看此标识符)。

  3. 提取您需要的字段:在“字段”字段中输入字符串:

    items(alternateLink,title)

  4. 身份验证:点击“使用OAuth 2.0授权请求”在右上方切换,并允许访问您的Google云端硬盘
  5. 发出API请求:点击“执行”
  6. 获取JSON格式的响应向下滚动,然后在方括号(包括它们)之间复制"items":之后的响应片段,例如:

    [ { "alternateLink": "https://...", "title": "Links to files" }, { "alternateLink": "https://...", "title": "shanghai.jpg" }, { "alternateLink": "https://...", "title": "map.JPG" }, { "alternateLink": "https://...", "title": "London_2008.jpg" }, { "alternateLink": "https://...", "title": "graph.png" }, { "alternateLink": "https://...", "title": "chart_1.png" } ]

  7. 将JSON转换为CSV:将此片段粘贴到以下网页:http://konklone.io/json/ - 它将生成一个表格:

    enter image description here

  8. 根据需要使用CSV :复制此表并粘贴到您的Google电子表格中。