Учебный код Google Slides не применяет желаемое имя файла к скопированному файлу

Я следую руководству Google "Объединение данных", чтобы импортировать данные из Google Таблиц в Google Slides, и часть, которая не работает полностью, — это "Копирование существующей презентации. " Когда я запускаю предоставленный код скрипта приложений, я получаю копию файла с именем "Копия..." вместо "Новое название презентации".

// Duplicate the template presentation using the Drive API.
var copyTitle = 'New presentation title';
var requests = {
  name: copyTitle
};
var driveResponse = Drive.Files.copy({
  resource: requests
}, originalpresentationID);
var presentationCopyId = driveResponse.id;
Logger.log(driveResponse.title) # Logger returns: "Copy of ..." 

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


person cek11lru    schedule 27.07.2018    source источник
comment
Драйв v2, а не v3. {title: "new name"}   -  person tehhowch    schedule 27.07.2018


Ответы (2)


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

var copyTitle = 'New presentation title';
    var driveResponse = Drive.Files.copy({          
    }, originalpresentationID);
    var presentationCopyId = driveResponse.id;
    var copyPPT = DriveApp.getFileById(presentationCopyId);
    copyPPT.setName(copyTitle);
person Darpan Sanghavi    schedule 27.07.2018
comment
Drive в Apps Script — это версия 2, которая использует title в качестве свойства имени файла. V3 использует name. - person tehhowch; 27.07.2018
comment
@tehhowch: я тоже пробовал с title. Тем не менее он создает файл с именем «Копия ...» вместо указанного заголовка. - person Darpan Sanghavi; 27.07.2018
comment
Вы, должно быть, также использовали неверную спецификацию метаданных - см. мой ответ. - person tehhowch; 28.07.2018

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

«Расширенный сервис» Drive в скрипте Google Apps использует REST API версии 2, для которого существуют некоторые различия в именах свойств. Примечательно, что имя файла title, а не name.

Кроме того, синтаксис для ресурса drive#file (также известного как метаданные) в Drive.Files.copy< /a> запрос не как дочернее resource свойство параметра, а как параметр напрямую:

const metadata = {
  title: "new name",
  // other properties
};
const options = {
  // optional request parameters
  // fields: "*",
};
var newFileMetaData = Drive.Files.copy(metadata, sourceId, options);
person tehhowch    schedule 27.07.2018