Не могу использовать getValues ​​() с IMPORTRANGE - PullRequest
0 голосов
/ 04 июля 2019

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

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

function askForPrice() {

var ss = SpreadsheetApp.openById('xXx');
var sheet = ss.getSheetByName('Sheet1');

var range1 = ss.getRange('A1').getDataRegion().getLastRow();
var data = ss.getDataRange().getValues();

var formUrl = ss.getFormUrl();     
var form = FormApp.openByUrl('xXxXx');
var items = form.getItems();

var dateCol = 1
var myID = sheet.getRange(range1, dateCol).getValue();
var dataCol1 = sheet.getRange(range1, dateCol).getValue();

Logger.log(dataCol1)

Проблема заключается в том, что после запуска кода и использования Logger.log() для проверки значения, захваченного getValues(), ничего не появляется.Если содержимое введено непосредственно в ячейку, я могу вернуть его через Logger.log().Но если ячейка содержится в диапазоне IMPORTRANGE, она не появляется в Logger.log().

Что я должен сделать, чтобы заставить это работать, чтобы было возвращено значение ячейки?

Ответы [ 2 ]

1 голос
/ 05 июля 2019

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

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

Еще одним, и, возможно, более надежным, является использование Google Apps Script для выполнения работы по импорту вместо использования IMPORTRANGE.

Относящиеся

0 голосов
/ 04 июля 2019

Требование:

Получите значение ячейки, используя формулу IMPORTRANGE.


Решение:

Вместо использования getValues() используйте getDisplayValues().Это возвращает отображаемое значение ячеек в массиве 2d.

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

var data = ss.getDataRange().getDisplayValues();

Ссылка:

...