Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 简化这个代码?从文件夹&;获取所有文件;它';s子文件夹--当前代码正在超时_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 简化这个代码?从文件夹&;获取所有文件;它';s子文件夹--当前代码正在超时

Google apps script 简化这个代码?从文件夹&;获取所有文件;它';s子文件夹--当前代码正在超时,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个驱动器文件夹,在一个父文件夹和多个子文件夹中有大约1500张谷歌幻灯片。我一直在使用这个脚本,但它停止工作,因为它超时了(我们的文件夹已经大大增加)。有什么简单的办法吗?我需要所有这些文件的链接(用它们的文件名)填充到Google工作表的一个选项卡上 这是我当前的脚本(从网上的某个地方获得并对其进行了一些修改;我在编写代码方面没有太多的经验/训练) 你想要所有的文件和文件夹,或者你能提供一些标准并安排它每天/每周运行吗?与一次性获取所有内容不同,保留一个增量模型,在该模型中搜索超过一天或

我有一个驱动器文件夹,在一个父文件夹和多个子文件夹中有大约1500张谷歌幻灯片。我一直在使用这个脚本,但它停止工作,因为它超时了(我们的文件夹已经大大增加)。有什么简单的办法吗?我需要所有这些文件的链接(用它们的文件名)填充到Google工作表的一个选项卡上

这是我当前的脚本(从网上的某个地方获得并对其进行了一些修改;我在编写代码方面没有太多的经验/训练)


你想要所有的文件和文件夹,或者你能提供一些标准并安排它每天/每周运行吗?与一次性获取所有内容不同,保留一个增量模型,在该模型中搜索超过一天或类似时间的文件。每天(通过调度程序)运行此代码,以便它继续向工作表中添加行。使用
setValues()
而不是
appendRow()
并使用批处理操作
getContinuationToken()
好的,谢谢!这是个好主意!我只是一开始很难把所有的文件都取出来。我也是使用/编写脚本的新手。我甚至不知道你说的getContinuationToken是什么意思。不过我会在参考网站上看看!我感谢你的帮助!!
var folderId = '1TO3e8ilnqNuxBcvTw8D_3RsDxDzMwvX7';
// Main function 1: List all folders, & write into the current sheet.
function listFolders() {
  getFolderTree(folderId, false);
}
// Main function 2: List all files & folders, & write into the current sheet.
function listAll() {
  getFolderTree(folderId, true);
}

// =================
// Get Folder Tree.
function getFolderTree(folderId, listAll) {
  try {
    // Get folder by id.
    var parentFolder = DriveApp.getFolderById(folderId);

    // Initialise the sheet.
    var file, data, sheet = SpreadsheetApp.getActiveSheet();
    sheet.clear();
    // Get files and folders
    getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);
  } catch (e) {
    Logger.log(e.toString());
  }
}
// Get the list of files and folders and their metadata in recursive mode.
function getChildFolders(parentName, parent, data, sheet, listAll) {
  var childFolders = parent.getFolders();
  // List folders inside the folder.
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    // Logger.log("Folder Name: " + childFolder.getName());
    data = [
      parentName + "/" + childFolder.getName(),
      childFolder.getName(),
    ];

    // List files inside the folder.
    var files = childFolder.getFiles();
    while (listAll & files.hasNext()) {
      var childFile = files.next();
      // Logger.log("File Name: " + childFile.getName());
      data = [
        childFile.getUrl(),
        childFile.getName(),
      ];
      // Write
      sheet.appendRow(data);
    }
    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);
  }
}