-1

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

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

在此处输入图像描述 在记录器的位置我需要替换谷歌表。请在这种情况下帮助我?

4

1 回答 1

0

如果您打算使用自定义函数在 Google Sheets 中编写子文件夹名称列表,它将不起作用,因为您的函数在使用 DriveApp 时需要授权,它会抛出错误消息You do not have permission to call X 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-04-28T16:24:15.427 回答