Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本:从电子表格创建批量文件夹_Google Apps Script_Flysystem Google Drive - Fatal编程技术网

Google apps script Google脚本:从电子表格创建批量文件夹

Google apps script Google脚本:从电子表格创建批量文件夹,google-apps-script,flysystem-google-drive,Google Apps Script,Flysystem Google Drive,需要帮助, 我正在寻找在我的谷歌驱动器创建大量文件夹从电子表格中提到的信息。电子表格的标题为“A”列作为名称,“B”列作为说明,“C”列作为父文件夹名称,“D”列作为其根目录或编号 在运行脚本之后,它会做两件事。 1:给出“异常:参数不能为空:说明”错误 2:它只创建一个文件夹,名称仅作为第一个字母。e、 g列“A”中的第2行的名称为“abcd”,列“A”中的第3行的名称为“XYZ”。脚本仅从第2行创建名为“a”而不是“abcd”的文件夹 function onOpen() { var ui

需要帮助, 我正在寻找在我的谷歌驱动器创建大量文件夹从电子表格中提到的信息。电子表格的标题为“A”列作为名称,“B”列作为说明,“C”列作为父文件夹名称,“D”列作为其根目录或编号

在运行脚本之后,它会做两件事。 1:给出“异常:参数不能为空:说明”错误 2:它只创建一个文件夹,名称仅作为第一个字母。e、 g列“A”中的第2行的名称为“abcd”,列“A”中的第3行的名称为“XYZ”。脚本仅从第2行创建名为“a”而不是“abcd”的文件夹

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('GDrive')
  .addItem('Create new Folders', 'crtGdriveFolder')
  .addToUi();
}

function crtGdriveFolder() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var numRows = sheet.getLastRow();
  var maxRows = Math.min(numRows,20);
  var folderid = sheet.getRange("C2").getValue();
  var root = sheet.getRange("D2").getValue();
  var dataRange = sheet.getRange(startRow, 1, maxRows, 2);
  var data = dataRange.getValue();
  var folderIterator = DriveApp.getFoldersByName(folderid);

  if(!folderIterator.hasNext()) {
    SpreadsheetApp.getActiveSpreadsheet().toast('Folder not Found!');
    return;
  }

  var parentFolder = folderIterator.next();

  if(folderIterator.hasNext()) {
    SpreadsheetApp.getActiveSpreadsheet().toast('Folder has a non-unique name!');
    return;
  }

  for (i in data) {
    var row = data[i];
    var name = row[0];
    var desc = row[1];



  if(root == "N" && name != "") {
      var idNewFolder = parentFolder.createFolder(name).setDescription(desc).getId();
      ////Utilities.sleep(100);
      var newFolder = DriveApp.getFolderById(idNewFolder);

      } if(root == "Y" && name != "") {
        var idNewFolder = DriveApp.createFolder(name).setDescription(desc).getId();
        Utilities.sleep(100);
        var newFolder = DriveApp.getFolderById(idNewFolder);
      }
  }
}

尝试
var data=dataRange.getValues()(getValueS,复数形式,结尾带有S)而不是getValue(单数)


使用
var maxRows=Math.min(numRows,20)。有时您的范围内的数据行是否可能少于20行?如果是,它将找到空行

正如Micheil在评论中提到的,只需更改
var data=dataRange.getValue()
to
var data=dataRange.getValues()并且它应该可以工作。目前它只获取单个单元格的值,而不是范围。这就是为什么当您尝试使用
var name=row[0]获取名称时它只返回该单元格值的单个字符。

否,
var maxRows=Math.min(numRows,20)即使少于20行也不会引起问题。

感谢您对maxrows的澄清,这是我的第一个猜测。