Используйте переменную для вставки в SpreadsheetApp.openById - PullRequest
0 голосов
/ 09 февраля 2019

Я бы хотел определить идентификатор с помощью переменной из электронной таблицы, а затем использовать ее для открытия этой таблицы в коде.Смотрите строки 4 и 5 ниже.По какой-то причине это не сработает - я не могу извлечь идентификатор из электронной таблицы (getValue, а затем вставить его в строку кода SpreadsheetApp.openById).

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

var sss = SpreadsheetApp.getActiveSpreadsheet();
var Brand1 = sss.getSheetByName('Brand 1');
var Brand1Data = Brand1.getRange('a5:z').getValue();
var key1 = Brand1.getRange('a3').getValues();
var Brand1Spreadsheet = SpreadsheetApp.openById(key1);
var BrandDatabase = Brand1Spreadsheet.getSheetByName('Database');
BrandDatabase.getRange(BrandDatabase.getLastRow()+1,3,Brand1Data.length, Brand1Data[0].length).setValues(Brand1Data);

1 Ответ

0 голосов
/ 09 февраля 2019

Причина, по которой вы не можете получить идентификатор с листа, заключается в том, что вы используете функцию getValues() вместо getValue(). Обратите внимание, что вторая функция не имеет 'в концеgetValue() возвращает значение определенной ячейки (или значение первой ячейки в определенном диапазоне), тогда как getValues() возвращает массив, который содержит все значения в диапазоне.Даже если в диапазоне есть только одна ячейка, она вернет массив.Таким образом, строка в коде, который получает идентификатор электронной таблицы, будет следующей:

var key1 = Brand1.getRange('a3').getValue();

Кроме того, я полагаю, что ваши Brand1Data I также должны быть изменены:

var Brand1Data = Brand1.getRange('a5:z').getValues();

Чтобы получить всезначения в этом диапазоне.

Ваш фиксированный код будет выглядеть так:

var sss = SpreadsheetApp.getActiveSpreadsheet();
var Brand1 = sss.getSheetByName('Brand 1');
var Brand1Data = Brand1.getRange('a5:z').getValues();
var key1 = Brand1.getRange('a3').getValue();
var Brand1Spreadsheet = SpreadsheetApp.openById(key1);
var BrandDatabase = Brand1Spreadsheet.getSheetByName('Database');
BrandDatabase.getRange(BrandDatabase.getLastRow()+1,3,Brand1Data.length, Brand1Data[0].length).setValues(Brand1Data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...