Как создать электронную таблицу в определенной папке с помощью App Script

кто-нибудь может мне помочь,

Я хочу создать электронную таблицу через скрипт приложения в определенной папке. Как это сделать.

в настоящее время я делаю следующим образом:

var folder = DocsList.getFolder("MyFolder");
var sheet = SpreadsheetApp.create("MySheet");
var file = DocsList.getFileById(sheet.getId());
file.addToFolder(folder);
file.removeFromFolder(file.getParents()[0]);

Он не работает.......

6 ответов


Так как вы больше не можете создать Google Docs (документы или электронные таблицы) с помощью DriveApp, и addToFolder, потому что DocList - Это исключено. Существует только один способ создания или" перемещения " документов Google или электронных таблиц Google..

  //"Move" file to folder-------------------------------//
  var fileID = '12123123213321'
  var folderID = '21321312312'
  var file = DriveApp.getFileById(fileID).getName()
  var folder = DriveApp.getFolderById(folderID)
  var newFile = file.makeCopy(file, folder)

  //Remove file from root folder--------------------------------//
  DriveApp.getFileById(fileID).setTrashed(true)

Как вы можете видеть это НЕ переместить файл, он делает копию с тем же именем в папке, которую вы хотите, и затем перемещает исходный файл в корзину. Я уверен нет другого способа сделать это.


как предложил @Joshua, можно создать электронную таблицу (в определенной папке) с помощью службы Advanced Drive:

var name = 'your-spreadsheet-name'
var folderId = 'your-folder-id'
var resource = {
  title: name,
  mimeType: MimeType.GOOGLE_SHEETS,
  parents: [{ id: folderId }]
}
var fileJson = Drive.Files.insert(resource)
var fileId = fileJson.id

нет необходимости перемещать файлы с помощью этого метода !


другой ответ немного короткий (и не очень явный). Пока ваш подход логичен и должен работать, если вы замените

file.removeFromFolder(file.getParents()[0]); 

С

file.removeFromFolder(DocsList.getRootFolder());

есть лучший способ сделать ту же работу, используя новый Drive app и папку класс, папка имеет метод создания файла и вы можете указать тип файла, используя перечисление mimeType.

код выглядит так :

function myFunction() {
  var folders = DriveApp.getFoldersByName('YOUR FOLDER NAME'); // replace by the right folder name, assuming there is only one folder with this name
  while (folders.hasNext()) {
   var folder = folders.next();
  }
  folder.createFile('new Spreadsheet', '', MimeType.GOOGLE_SHEETS); // this creates the spreadsheet directly in the chosen folder
}

  folder = DriveApp.getFolderById("FOLDER_ID")
  var ss = SpreadsheetApp.create("SPREADSHEET_NAME")
  var temp = DriveApp.getFileById(ss.getId());
  folder.addFile(temp)
  DriveApp.getRootFolder().removeFile(temp)

вы можете использовать приведенный выше код, чтобы достичь того же без использования дополнительных служб диска


наконец-то я получил ответ на свой вопрос. Следующие работы

var file = DocsList.getFileById(sheet.getId());
var folder = DocsList.getFolder("MyFolder");
file.addToFolder(folder);

// remove document from the root folder
folder = DocsList.getRootFolder();
file.removeFromFolder(folder);

что не работает? Используйте getRootFolder в последней строке.