将一个谷歌驱动器文件夹中的所有照片插入谷歌表格?

Posted

技术标签:

【中文标题】将一个谷歌驱动器文件夹中的所有照片插入谷歌表格?【英文标题】:Insert all photos from one google drive folder into google Sheet? 【发布时间】:2021-08-06 02:12:15 【问题描述】:

我不是一个编码员,只是聪明到可以稍微修改代码。但我希望有人能帮助我。我希望将 google 文件夹中的所有图像上传到带有脚本的电子表格中。我需要根据单元格更改文件夹名称,因此我可以将单元格的名称更改为不同的文件夹运行脚本,脚本将从文件夹中引入所有照片。有些文件夹可能有 5 张照片,有些文件夹可能有 25 张照片。我已经能够弄清楚,但前提是我参考了实际照片,而不仅仅是参考文件夹的名称并将其全部导入。提前感谢所有帮助。

【问题讨论】:

【参考方案1】:
function insertImages() 
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const nameF = 'Folder'; // Sheet Name of the sheet containing the Folder Name
  const rangeF = 'A1'; // Cell containing the Folder Name
  const nameT = 'Target'; // Sheet Name of the sheet to insert images
  let row = 2; // Starting row to insert
  const col = 1; // Column to insert
  
  const sheet = ss.getSheetByName(nameT);
  const folderName = ss.getSheetByName(nameF).getRange(rangeF).getValue();
  const folders = DriveApp.getFoldersByName(folderName);
  while (folders.hasNext()) 
    const folder = folders.next();
    const files = folder.getFiles();
    while (files.hasNext()) 
      const file = files.next();
      sheet.insertImage(file.getBlob(), col, row++);
    
  

【讨论】:

我实现了这个,运行它并没有带回图像,我没有收到任何错误,我所做的只是将“文件夹”、“A1”、“目标”的名称全部更改为正确的名称/单元格。将文件夹的名称准确地放入文件夹名称的单元格中。有可能我忘记了什么吗?你能让它工作/测试吗?我不明白为什么它没有给出错误但没有图像。 抱歉,打错字了。 const folder 应该是 const folders 我尝试了几种不同的组合,你能做到吗? 我已经尝试了所有方法,但无法正常工作。你愿意帮忙吗?我会为你的时间折腾几美元。【参考方案2】:

按 ID

function importImgs1() 
  var folderID = '1ZfWEnxtKQiuz8V9j2ckgIZRHRMmYc7rH';
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('import images');
  sh.clear();
  sh.appendRow(["name", "image"]);
  var folder = DriveApp.getFolderById(folderID);
  var data = [];
  var files = folder.getFiles();
  while (files.hasNext()) 
    var file = files.next();
    data = [ 
      file.getName(),
      "=image(\"https://docs.google.com/uc?export=download&id=" + file.getId() +"\")",
    ];
    sh.appendRow(data);
  

按名称

function importImgs2() 
  var folderName = 'img';
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('import images by name');
  sh.clear();
  sh.appendRow(["name", "image"]);
  var folders = DriveApp.getFoldersByName(folderName);
  var foldersnext = folders.next();
  var data = [];
  var files = foldersnext.getFiles();
  while (files.hasNext()) 
    var file = files.next();
    data = [ 
      file.getName(),
      "=image(\"https://docs.google.com/uc?export=download&id=" + file.getId() +"\")",
    ];
    sh.appendRow(data);
  

【讨论】:

我不能使用文件夹ID,我需要使用文件夹的名称

以上是关于将一个谷歌驱动器文件夹中的所有照片插入谷歌表格?的主要内容,如果未能解决你的问题,请参考以下文章

将谷歌表格中的特定范围插入到 MYSQL

上传时自动注明谷歌驱动器文件夹

text 将所有谷歌驱动器文件转移到另一个帐户

谷歌驱动 API 超出用户速率限制

如何将字符串作为文件上传到 Google Drive?

谷歌脚本:根据TRIGGER将公式计算的值从一张纸复制到另一张(编辑或时间驱动)