Как исправить ошибку - Неверный аргумент: file.contentType при создании нового листа Google

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

Я искал эту ошибку, но ничего не нашел. Большинство поисковых запросов выдают ошибку MimeType, но я не думаю, что проблема в этом. Ниже приведен код, который я использую:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var newFolder = DriveApp.getFolderById("MyID").createFolder("New Folder");
newFolder.createFile("myFileName",ss,MimeType.GOOGLE_DOCS);

Всякий раз, когда я запускаю это в своей электронной таблице, я получаю следующую ошибку:

Недействительный аргумент: file.contentType (строка 3, файл «Код»).

Я пробовал использовать "" для содержания для createFile.


person Pcud    schedule 02.02.2017    source источник
comment
Вы хотите конвертировать из электронной таблицы в документы? Или вы хотите просто создать новый документ? Потому что в вашем скрипте кажется, что вы хотите преобразовать или импортировать данные электронной таблицы в документ Google.   -  person Tanaike    schedule 02.02.2017
comment
Ух ты. Не могу поверить, что не осознавал этого. Я хотел создать новую таблицу. Я изменил MimeType на .GOOGLE_SHEETS, но он по-прежнему возвращает ту же ошибку.   -  person Pcud    schedule 03.02.2017


Ответы (3)


Как насчет следующего образца? Я также не могу использовать MimeType для GOOGLE_SHEETS и GOOGLE_DOCS. Не знаю почему. Поэтому я предлагаю использовать SpreadsheetApp.create (). Поток следующий.

  1. Создайте электронную таблицу с помощью SpreadsheetApp.create ().

  2. Добавьте информацию о целевой папке в электронную таблицу.

  3. Удалите исходную информацию о папке из электронной таблицы.

Таким образом, вы можете создать электронную таблицу в нужной папке.

Сценарий:

var sheetfile = "myFileName";
var destfolder = "MyID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder).addFile(file);
var docfile = file.getParents().next().removeFile(file);

Обновлено: 25 ноября 2020 г.

27 июля 2020 года добавлен метод moveTo(destination). И методы addFile и removeFile будут устаревшими. Ref Итак, когда используется метод moveTo(destination) для приведенного выше сценария это выглядит следующим образом.

var sheetfile = "myFileName";
var destfolder = "MyID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder);
var docfile = file.moveTo(destfolder);
  • Когда используется метод Files: insert Drive API, можно также использовать следующий скрипт. Ссылка

      var sheetfile = "myFileName";
      var destfolder = "MyID";
      Drive.Files.insert({title: sheetfile, mimeType: MimeType.GOOGLE_SHEETS, parents: [{id: destfolder}]});
    
person Tanaike    schedule 03.02.2017
comment
Учитывая обновление диска Google от 30 сентября 2020 г., в котором каждый объект может иметь только одного родителя - я не уверен, что это сработает - var docfile = file.getParents (). Next (). RemoveFile (file); - person Moiz Tankiwala; 25.11.2020
comment
@Moiz Tankiwala Спасибо за ваш комментарий. На текущем этапе кажется, что вышеуказанный скрипт работает. Но из вашего комментария я добавил в свой ответ другие шаблоны. - person Tanaike; 25.11.2020

этот метод работает со мной

function myFunction() {
var sheetfile = "myfilename";
var destfolder = "MYFOLDER";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFoldersByName(destfolder).next();
var docfile = file.moveTo(destfolder);
}

без next (); это не работает для меня

person bedji    schedule 10.03.2021

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

var templateFileId = asfashfkhsfkhfkhkashf; // Это то, что вы должны определить как константу var destinationFolderId = sdfashfkhaskf var newSpreadsheet = DriveApp.getFileById (templateFileId) .makeCopy (NewSpreadsheet, destinationFolderId);

person Moiz Tankiwala    schedule 25.11.2020