Создайте файл Google Doc непосредственно в папке, а не в корневой папке, используя Google Apps Script - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть этот скрипт Google Apps, который отлично работает:

function myFunction(e) {

  var name = e.values[1];
  var kantoor = e.values[2];

  var doc = DocumentApp.create('Sleuteloverdracht ' + name);
  var body = doc.getBody();
  body.appendParagraph('Sleuteloverdracht ' + name);
  body.appendParagraph('Uw naam is '+ name + '\n' + 'U heeft de sleutel van kantoor '+ kantoor);
  doc.saveAndClose();

}

Он создает документ Google с содержимым электронной таблицы, заполненной ответами из формы.Он работает с триггером, когда отправляется форма, создается документ.

Но проблема в том, что файлы Документа Google размещаются на Моем диске, а не в той же папке, что и форма и электронная таблица.

Редактировать: проблема в этом Создать файл Google Doc непосредственно в папке Google Drive тема не та.У меня уже есть документ, я не хочу его создавать.Существующий документ просто необходимо переместить в другой файл.Смотрите ответ ниже для решения, которое я использовал.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я нашел ответ сам.

Я использовал этот скрипт (это комбинация двух скриптов, которые я нашел в Интернете), чтобы найти файлы с правильным именем и удалить их в папку назначения.После этого он удаляет файл в корне.Он работает с триггером, функция запускается каждую минуту, потому что в моем случае форма, создающая документ (который необходимо переместить в папку назначения), используется несколько раз в час (создается несколько документов).

   function SearchFiles() {

      var searchFor ='title contains "NAME/LETTER"';
      var names =[];
      var fileIds=[];
      var files = DriveApp.searchFiles(searchFor);

      while (files.hasNext()) {
        var file = files.next();
        var fileId = file.getId(); 
        fileIds.push(fileId);
        var name = file.getName();
        names.push(name);


   }

      var docFile = DriveApp.getFileById(fileId);
      DriveApp.getFolderById('FOLDER_ID_DESTINATION_FOLDER').addFile(docFile);
      DriveApp.getRootFolder().removeFile(docFile);

    }
0 голосов
/ 27 ноября 2018

Это как создать новый Google Doc в определенной папке.При создании документа необходимо установить тип MIME.

Обратите внимание, что этот код NOT сначала создает файл Doc, перемещает его, а затем удаляетфайл в корневой диск.Есть другой популярный ответ, который делает это.Этот код создает новый файл типа Google Doc прямо в папке.

Вам потребуется использовать Advanced Drive API.Он должен быть включен в двух местах.

  • В редакторе кода выберите «Ресурсы», а затем выберите «Дополнительные услуги Google»
  • Нажмите кнопку «Drive API», чтобы включить ее.
  • Нажмите на ссылку: Панель инструментов API Google Cloud Platform.
  • Поиск Drive Drive
  • Выберите Google Drive API из списка поиска
  • Включите Drive API

код:

function myFunction(e) {
  var doc,fileResource,folder,ID_of_newFile,multipleFolders,newFile,
      newDocName,rng,sh,ss,ssFile,ssID;

  var name = e.values[1];
  var kantoor = e.values[2];

  newDocName = 'Sleuteloverdracht ' + name;//Set the name of the new file

  rng = e.range;//Get range in the spreadsheet that received the data
  sh = rng.getSheet();//Get sheet tab
  ss = sh.getParent();//Get spreadsheet
  ssID = ss.getSheetId();//Get file ID of spreadsheet - Integer

  ssFile = DriveApp.getFileById(ssID);//Get the spreadsheet file in order to get the
    //folder to put the new file in
  multipleFolders = ssFile.getParents();//Get all parent folders of the spreadsheet file

  folder = multipleFolders.next();//Get the folder of the spreadsheet

  fileResource = {
    'title': newDocName,
    "parents": [{'id':folder.getId()}],  //<--By setting this parent ID to the 
    //folder's ID, it creates this file in the correct folder
    'mimeType': 'application/vnd.google-apps.document'
  };

  newFile = Drive.Files.insert(fileResource);//Create the new document file
   // directly into the same folder as the spreadsheet
  ID_of_newFile = newFile.getId();

  //Logger.log(ID_of_newFile)

  doc = DocumentApp.openById(newFile.getId());//Open the new file as a Google document

  var body = doc.getBody();
  body.appendParagraph('Sleuteloverdracht ' + name);
  body.appendParagraph('Uw naam is '+ name + '\n' + 
    'U heeft de sleutel van kantoor '+ kantoor);
  doc.saveAndClose();

}
...