Создайте новый документ, используя Google Script, используя несколько значений в качестве имени документа - PullRequest
0 голосов
/ 20 декабря 2018

Я создаю шаблон для создания тестовых случаев в Google Drive.Используя Google Documentation и Stackoverflow, я создал приведенный ниже код, чтобы сохранить шаблон в новом документе.

// The onOpen function is executed automatically every time a Spreadsheet is loaded
function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [];
  menuEntries.push({name: "Save Test Case", functionName: "saveTestCase"});
  ss.addMenu("Test Case Menu", menuEntries);
}

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var name = sheet.getRange("Test Case Template!B3:G3").getValue();
  var destFolder = DriveApp.getFolderById("xxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}

Я создал пользовательский пункт меню с сохранением шаблона.Сохранение создает новый документ в заданной папке.Пока все хорошо.Но в том же действии я пытаюсь переименовать новый документ.Поэтому я установил диапазон, потому что имя должно быть над несколькими полями.И эта часть не работает.Вместо получения значений B3: G3 он получает только значение B3.

У кого-нибудь есть идея, если это возможно, и как я могу это исправить?

Самым идеальным для меня было бы то, что значение B3: G3 в этой картинке превращается в название документа "TC-001 Это тестовый пример".

РЕДАКТИРОВАТЬ:

С решением Amit код для имени выглядит следующим образом:

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var name = sheet.getRange("Test Case Template!B3:G3").getValues().join(" ");
  var destFolder = DriveApp.getFolderById("xxxxxx");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}

Это действительно решает мою первую проблему.Результатом, однако, является имя, разделенное запятыми.Поэтому я изменил это на это сейчас:

// The code below makes a duplicate of the active sheet
function saveTestCase() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var nameA = sheet.getRange("Test Case Template!B3").getValue();
  var nameB = sheet.getRange("Test Case Template!C3").getValue();
  var nameC = sheet.getRange("Test Case Template!D3").getValue();
  var nameD = sheet.getRange("Test Case Template!G3").getValue();
  var name = nameA + nameB + nameC + ' ' + '//' + ' ' + nameD;
  var destFolder = DriveApp.getFolderById("1pXJvplBAMz8oeS5tkyWVZSUCJsTuNrcS");
  DriveApp.getFileById(sheet.getId()).makeCopy(name, destFolder);
}

, что приводит к идеальному имени файла, включая входы и все данные, которые мне нужны в имени файла.

Любые рекомендации по улучшению всегда приветствуются.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы используете метод getValue, который будет возвращать только первое значение ячейки в диапазоне.Вместо этого используйте getValues ​​(), который возвращает массив значений, которые можно преобразовать в строку с помощью метода join (разделителя).

Заменить:

var name = sheet.getRange("Test Case Template!B3:G3").getValue();

на:

var name = sheet.getRange("Test Case Template!B3:G3").getValues().join(" ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...