Google Apps - Как получить все имена файлов из текущего каталога? - PullRequest
0 голосов
/ 25 сентября 2018

Как я могу получить все имена файлов из текущего каталога?

У меня есть код

function showAllFollderFronRoot() {

  // get all files from the ROOT folder
  var files = parentFolder;
  while (files.hasNext()) {
    var file = files.next();  
   //  Logger.log(file.getName());
   DocumentApp.getUi().alert(file.getName());
  }
}

Но он работает только с ROOT dir.Как я могу получить все имена файлов в массиве в текущем каталоге?

ОБНОВЛЕНИЕ: У меня есть структура файла: MT / MT.100-107 / MT.100-1007.1001.doc Мне нужно сделать код, если кто-то откроетНовый шаблон из документов - скрипту нужно автоматически сохранить этот файл с истинной структурой - со следующим именем файла + 1 (пример MT.100-1007.1002.doc, следующий новый файл из шаблона - MT.100-1007.1003.doc ...)найти все имена файлов => показать последнее большее количество (1002.doc) => count + 1 => сохранить этот файл с новым именем файла MT.100-1007.1003.doc

Мой код работает, но он делает файл tmp вКорневой каталог & не работает идеально, потому что он не вычисляет последний больший счет в текущем каталоге, и если я удаляю файл, например MT.100-1007.1003.doc в каталоге dir MT, и создаю новый файл в каталоге dir UA - счетчик будет MT.100-1007.1004.doc независимо от того, какие имена файлов находятся в папке UA.

Эти скрипты с ошибками, как я могу это исправить?

/**
 * @OnlyCurrentDoc
 */
function saveFilename() {

  // Get current file name
  const ui = DocumentApp.getUi(),
    doc = DocumentApp.getActiveDocument(), //Added
    thisFileId = doc.getId(),
    thisFileName = doc.getName();

  const thisFile = DriveApp.getFileById(thisFileId);//Modified from getFolderById
  const parentFolder = thisFile.getParents();
  const currentFolder = parentFolder.next();//Modified from currentFolderName
  const currentFolderName = currentFolder.getName();//Added
  //ui.alert(currentFolderName);

  /*Store a init file in root to getLatestFileNumber*/
  var initIter = DriveApp.getFilesByName(currentFolderName + 'init00'),
    initBool = initIter.hasNext(),
    init;


  if (!initBool) {
    init = DriveApp.createFile(currentFolderName + 'init000', '0');
  } else {
    init = initIter.next();
  }

  /*Get current Number and format it to 4 digits*/
  var currentNum = init.getBlob().getDataAsString() * 1 + 1,
    formatNum = ('0000' + currentNum).substr(-3);

  /*If filename already contains folderName, do nothing*/
  if (!(thisFileName.search(currentFolderName) + 1)) {
    doc.setName(currentFolderName +'.' + formatNum).saveAndClose();
    init.setContent(currentNum);
  }
  // delete TMP file from ROOT dir
  DriveApp.getFileById(init.getId()).setTrashed(true)
}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Я исправляю эту проблему, но не знаю, как разобрать последние 4 цифры в имени файла и найти MAX из него.Есть ли у вас какие-либо идеи?Метод ломтик (4) не работает в скрипте приложения: (

function currFiles() {

  const ui = DocumentApp.getUi(),
    doc = DocumentApp.getActiveDocument(),
    thisFileId = doc.getId(),
    thisFileName = doc.getName();

  const thisFile = DriveApp.getFileById(thisFileId);
  const parentFolder = thisFile.getParents();
  const currentFolder = parentFolder.next();
  const currentFolderName = currentFolder.getName();
  const currentFolderId = currentFolder.getId();

  // get all files in currentFolder

  var folderId = currentFolderId;
  // Log the name of every file in the folder.
  var files = DriveApp.getFolderById(folderId).getFiles();
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
  }
}
0 голосов
/ 25 сентября 2018
  • Вы хотите получить имена файлов всех файлов в родительской папке активного документа.

Если мое понимание верно, как насчет этого ответа?

Поток:

Порядок выполнения этого скрипта следующий.

  1. Извлечение идентификатора файла активного документа.
  2. Извлечение идентификатора родительской папки активного документа.
  3. Извлечение файлов из идентификатора родительской папки.
  4. Получить имена файлов из файлов.

Модифицированный скрипт:

function showAllFollderFronRoot() {
  var fileId = DocumentApp.getActiveDocument().getId();
  var parentFolderId = DriveApp.getFileById(fileId).getParents().next().getId();
  var files = DriveApp.getFolderById(parentFolderId).getFiles();
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName())
  }
}

Примечание:

  • Этот пример скрипта предполагает следующее.
    • Родителем активного документа является только один.
    • Все файлы в родительской папке активного документа извлекаются.Но папки не извлекаются.

Ссылки:

Если я неправильно понимаюВаш вопрос, пожалуйста, скажите мне.Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...