【问题标题】:How to get list all sub folders name from parent folders in google sheet with apps script google drive如何使用应用程序脚本谷歌驱动器从谷歌表中的父文件夹中获取所有子文件夹名称
【发布时间】:2021-07-21 22:05:43
【问题描述】:

如何将谷歌驱动器中的所有子文件夹名称列出到谷歌表格中?

这是代码,它正在工作,但我无法将它们放入谷歌表格。

enter image description here 在记录器的地方,我需要更换谷歌表。请在这种情况下帮助我?

【问题讨论】:

标签: google-apps-script google-sheets subdirectory google-drive-picker


【解决方案1】:

如果您打算使用custom function在Google Sheets中写入子文件夹名称列表,它将不起作用,因为您的功能在使用DriveApp时需要授权,它会抛出错误消息You do not have permission to call X service.,该服务需要用户授权,因此不能用于here 所述的自定义函数。

您可以使用Spreadsheet Service 在 Google 表格中写下您的子文件夹名称。但是您需要指定特定的工作表和要写入数据的单元格。

示例代码:

function findSubFolder(){
  var childFolder = DriveApp.getFolderById('xxxxxxxx').getFolders();
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var activeCell = activeSheet.getActiveCell();

  var childNames = [];
  while (childFolder.hasNext()) {
    var child = childFolder.next();
    Logger.log(child.getName());
    childNames.push([child.getName()]);
  }
  
 
 activeSheet.getRange(activeCell.getRow(),activeCell.getColumn(),childNames.length,1).setValues(childNames);
}

它有什么作用?

  1. 使用SpreadsheetApp.getActiveSheet() 获取活动工作表,使用Sheet.getActiveCell() 获取活动单元格
  2. 获取所有子文件夹名称,并使用Array.prototype.push() 将其添加到childNames 数组中

请注意,当我推送子名称时,我使用了 [sub-folder name],当我们想要使用 Range.setValues() 时需要它,它接受一个二维数组,其中我想要多行。

  1. 从活动单元格开始将childNames 数组写入活动工作表。使用Sheet.getRange(row, column, numRows, numColumns)Range.setValues(values)

输出:


如果您想在单个单元格(在您的活动单元格中)写子文件夹名称,您可以替换

activeSheet.getRange(activeCell.getRow(),activeCell.getColumn(),childNames.length,1).setValues(childNames);

activeCell.setValue(childNames.flat().toString());

输出:

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多