Как получить папку с недавним документом - PullRequest
0 голосов
/ 29 сентября 2019

Я запускаю скрипт внутри документа Google. Как получить последнюю папку, в которой находится этот документ, или как создать подпапку из последней папки моего документа?

Я хочу создать подпапку, но эта подпапка всегда создается на верхнем уровнев Google Drive.

`if (!DriveApp.getFoldersByName("myNewFolder")) DriveApp.createFolder("myNewFolder");`

Таким образом, похоже, что активная папка является папкой верхнего уровня.

Не существует метода DocumentApp.getMyFolder() или DriveApp.getRecentFolder(). Может быть, есть какая-то предварительная вещь в стиле LINUX, такая как

DriveApp.createFolder("./myNewFolder");

Итак, как мне получить последнюю папку или, что еще лучше, как создать новую папку в последней папке, а затем создатьновый документ внутри этой новой папки? Примечание. Папка должна создаваться новой, только если она еще не существует.

Большое спасибо!

1 Ответ

0 голосов
/ 29 сентября 2019

Проблема

Создание папки в папке на диске Goolge (непосредственно, без перемещения), в которой хранится документ Google.

Решение

  1. Этот пример вспомогательной функции получает родительский Folder файла по его идентификатору:

    /**
     * Gets file location;
     * @param {String} id document id;
     * @return {Folder|null} file's folder; 
     */
    function getLocation(id) {
      var file = DriveApp.getFileById(id);
      var folders = file.getParents();
      if(folders.hasNext()) {
        return folders.next();
      }else {
        return null;
      }
    }
    
  2. Получить родительскую папкутекущий документ (при условии, что ваш сценарий привязан к документу, в противном случае получите идентификатор другим способом):

    function createSubfolderInCurr() {
      var id = DocumentApp.getActiveDocument().getId();
      var folder = getLocation(id);
    
      if(folder) {
        //part 3 goes here;
      }
    }
    
  3. Проверьте, существует ли подпапка, и при необходимости создайте ее:

    var exists = folder.getFoldersByName('myNewFolder').hasNext();
    if(!exists) {
      var newfolder = folder.createFolder('myNewFolder');
    
      //part 4 goes here;
    }
    
  4. Что касается создания нового документа в этой папке, сначала необходимо создать Document, затем получить к нему доступ как File и перейти от root квновь созданная папка:

    var newdoc = DocumentApp.create('NewFile');
    var newId = newdoc.getId();
    var newfile = DriveApp.getFileById(newId);
    
    DriveApp.removeFile(newfile);
    newfolder.addFile(newfile);
    

ссылка

  1. getParents() метод ссылка ;
  2. getFoldersByName() метод ссылка (класс «Папка»);
  3. createFolder() метод ссылка (Folder класс);
  4. create() метод reference (DocumentApp класс);
  5. removeFile() метод ссылка (DriveApp класс);
  6. addFile() метод ссылка (Folder класс);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...