Не удается найти функцию setValues ​​в объекте Spreadsheet - PullRequest
0 голосов
/ 30 августа 2018

Это сообщение об ошибке сводит меня с ума. Это, наверное, так просто, но я новичок в этом. Я ценю любую помощь, которую я могу получить.

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

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

Проблема заключается в том, что я пытаюсь вставить значения заголовка в новый лист (строка 17) - «Ошибка типа: не удается найти функцию setValues ​​в объекте Spreadsheet. (Строка 17, файл« Код »)»

Вот код, который у меня есть:

    function onFormSubmit() {
  // onFormSubmit
  // get submitted data
  var ss = SpreadsheetApp.openById("1PieNQjjgjsZIEhTwmzGN9BcUXPSscWnWnnYL8XvjpTA");
  var sheet = ss.getSheetByName("Submissions");
  var row = sheet.getLastRow();
  var Col = sheet.getLastColumn();
  var headings = sheet.getRange(1,1,1,Col).getValues();
  var lastRow = sheet.getRange(row, 1, 1, Col);
  var UnitNumber = sheet.getRange(row,3,Col).getValue(); 
  // check if username has sheet
  if(ss.getSheetByName(UnitNumber)){
    var DrillSheet = ss.getSheetByName(UnitNumber);
    // if not make
  } else {
   var DrillSheet = SpreadsheetApp.create(UnitNumber); 
    DrillSheet.getRange(1,1,1,Col).setValues(headings);
  }
  // copy submitted data to Drill sheet
  DrillSheet.appendRow(lastRow.getValues()[0]);
  DrillSheet.appendRow(['=CONCATENATE(B6," ",B5)']);
  DrillSheet.appendRow(['=TRANSPOSE(B1:2)']);
}

Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 30 августа 2018

Когда вы создаете новую электронную таблицу, вам нужно определить, к какому отдельному листу вы хотите добавить заголовки. Вам нужно получить объект листа с .getSheetByName(). Первый лист всегда называется «Лист1», поэтому вы можете получить его по имени в скрипте. Простым решением было бы изменить строку 17 на:

DrillSheet.getSheetByName('Sheet1')getRange(1,1,1,Col).setValues(headings);
...