Создание нового файла в папке с помощью скрипта Apps с помощью службы Google Advanced Drive

существует четыре способа создания нового файла:

  • DocsList - показано, как DocsList в главном списке. Встроенный скрипт приложений.
  • DriveApp - показано, как диск в главном списке. Встроенный скрипт приложений.
  • Drive API-также отображается как диск в главном списке. надо добавить к сценарию приложений.
  • DocumentApp - показано, как документ в Главном Список. Встроенный, но только создает файл документа.

они все называются услуги. API диска называется дополнительные услуги. Итак, какой из них вы должны использовать? Не знаю, это зависит от обстоятельств. Этот вопрос касается Drive API Дополнительные Услуги.

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

если я могу создать новый файл с помощью Drive API, но затем мне нужно использовать службу DriveApp для перемещения файла, созданного с помощью Drive API, в папку, в которой я хочу его, то использование Drive API в этой конкретной ситуации бессмысленно.

Я могу создать новый файл на своем Google Диске из сценария Google Apps .gs код, но файл записывается к основной моей езды. Я хочу записать файл непосредственно в подпапку. Мой текущий код:

var fileNameSetA = 'someFile.jpg';
var uploadedBlobA = an image uploaded with a file picker;

var fileTestDrive = {
  title: fileNameSetA,
  mimeType: 'image/jpeg'
};

fileTestDrive = Drive.Files.insert(fileTestDrive, uploadedBlobA);

хотя код работает, я понятия не имею, почему синтаксис таков, и я не могу найти документацию, которая говорит мне, почему. Я могу найти список свойств:

на title: и mimeType: являются необязательными свойствами как часть Request Body. В этом примере необязательные свойства, очевидно, помещаются в объект key: value paired. Так синтаксис:

Drive.Files.insert(optional properties, content);

есть также необходимые параметры запроса:

uploadType -->media, multipart, resumable

но я не вижу никакой необходимости uploadType параметр, обозначенный в любом месте кода примера. Итак, я не понимаю документацию Google.

Google Documentation Insert

можно ли писать непосредственно на определенный диск с помощью службы Google Advanced Drive в скрипте приложений .код gs файл? Как мне это сделать?

4 ответов


самый простой способ создать новый файл, чтобы использовать DriveApp который поставляется с чистым скриптом Google Apps:

var dir = DriveApp.getFolderById("{dir_id}");
var file = dir.createFile(name, content);

если вы не знаете точный идентификатор каталога, вы можете получить папку по ее имени:

var dir = DriveApp.getFoldersByName(name).next();

на next() - это там, потому что getFoldersByName() возвращает коллекцию всех каталогов, имена которых соответствуют заданному значению.

также проверить DriveApp docs:https://developers.google.com/apps-script/reference/drive/drive-app


может быть, это немного поздно, но, глядя на REST API docs, Это показывает, что вы можете использовать диск.Файлы.вставить для вставки в любую папку. Вы просто должны добавить идентификатор папки в свойствах файла, который вы вставляете, как например:

var file = {
   title: 'myFile',
   "parents": [{'id':folder.getId()}],  //<--By setting this parent ID to the folder's ID, it creates this file in the correct folder.
   mimeType: 'image/png'
 };

вы также можете заменить папку.getID() с диск.getFoldersByName ('имя папки') Если вы не знаете ID.

Это полезно, потому что Драйв.Файлы.insert () принимает аргументы Водить.createFile () и диск.команду createfolder() не.


документация вставить на Drive API найден по ссылке:

API привода для вставки

в разделе запроса. Один из Дополнительные Свойства на вставить и родителей[]. В квадратных скобках [] указывается, что может быть указан список родителей. Документация для родителей[] государства-это:

коллекция родительских папок, содержащих этот файл. Установка этого поле будет поместить файл в указанные папки. Включить, если никакой папки не указаны, файл будет помещен в корень по умолчанию папка.

так, . . . используя вставить на Drive API, . . . . можете запись нового файла непосредственно в подпапку. Это возможно.

теперь, номенклатура и синтаксис для Google Диска SDK, HTTP-запроса отличается от того, что находится внутри скрипта приложений.

синтаксис для вызова HTTP-запроса API диска внутри .gs файл является одним из следующих трех:

  • диск.Файлы.insert (файловый ресурс)
  • диск.Файлы.insert (файловый ресурс, BLOB mediaData)
  • диск.Файлы.insert (файловый ресурс, BLOB mediaData, объект optionalArgs)

синтаксис, показанный в списке выше из выпадающего списка автозаполнения в редакторе кода сценария приложений. Если ввести Drive.Files. появится список возможных методов. Я не могу найти информацию о синтаксисе нигде в документации.

Итак, где же родителей[] необязательное свойство go? Ну, это не капля, так что мы можем это исключить. Это либо FILE resource или OBJECT optionalArgs. optionalArgs указывает, что это объект, а FILE resource на самом деле также Ан объект.

в примерах FILE resource строится как объект пары ключ:значение.

Загрузка Файлов-Расширенный Сервис Дисков-Документация Google


я смог использовать DriveApp для создания файла в указанной папке таким образом.

var driveFolder = DriveApp.getFolderByName("MyDriveFolder");
var file = driveFolder.createFile(formObject.txtReceipt);
file.setName("MyFile");    

PS: formObject.txtReceipt поступает из элемента управления загрузкой файлов в форме в html, и это возвращает blob