Size: a a a

Чат | Google Таблицы и скрипты

2018 May 04

АП

Александр Прозоров... in Чат | Google Таблицы и скрипты
10 шт делал
источник

АП

Александр Прозоров... in Чат | Google Таблицы и скрипты
Тут вопрос сколько строк и столбцов
источник

АП

Александр Прозоров... in Чат | Google Таблицы и скрипты
Наверное общее количество ячеек
источник

IN

Ilya Nikolaev in Чат | Google Таблицы и скрипты
Евгений, спасибо за гифку! Подскажите в продолжение вопроса, пожалуйста, модно ли с помощью ВПР тянуть из искомой Таблицы данные по нескольким условиям? То есть в качестве искомого значения будут данные из двух столбцов и искать их нужно тоже в двух столбцах. Аналог СУММЕСЛИМН, только не суммировать, а просто возвращать значения
источник
2018 May 05

RY

Ruslan Y. in Чат | Google Таблицы и скрипты
Секретарь
Кто знает, есть ограничение на количество таблиц для IMPORTRANGE?
На количество ячеек в таблице нету. А в документе не более 50 раз можно юзать.
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Ruslan Y.
На количество ячеек в таблице нету. А в документе не более 50 раз можно юзать.
Прописанного ограничения нет, но если будете загружать  ~8000 строк и 20 столбцов и больше (цифры примерны, но где-то около), то все начнет работать мучительно долго
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Ilya Nikolaev
Евгений, спасибо за гифку! Подскажите в продолжение вопроса, пожалуйста, модно ли с помощью ВПР тянуть из искомой Таблицы данные по нескольким условиям? То есть в качестве искомого значения будут данные из двух столбцов и искать их нужно тоже в двух столбцах. Аналог СУММЕСЛИМН, только не суммировать, а просто возвращать значения
Илья, можно и с помощью ВПР, но я советую пользоваться в таких случаях filter. В нем может быть сколько угодно условий и можно задать столбец, который будет выводиться

Вот пример с ВПР:  vlookup(A2&B2; {Scores!$A$3:$A&Scores!$B$3:$B\Scores!$C$3:$C}; 2; 0)
источник

RY

Ruslan Y. in Чат | Google Таблицы и скрипты
Ну я знаю что будет работать тяжко, но спрашивали о лимитах. Я лично упирался в ограничение 50 импортов в одном доке)
источник

IN

Ilya Nikolaev in Чат | Google Таблицы и скрипты
Eugeny Namokonov
Илья, можно и с помощью ВПР, но я советую пользоваться в таких случаях filter. В нем может быть сколько угодно условий и можно задать столбец, который будет выводиться

Вот пример с ВПР:  vlookup(A2&B2; {Scores!$A$3:$A&Scores!$B$3:$B\Scores!$C$3:$C}; 2; 0)
Спасибо! Буду пробовать )
источник

С

Секретарь in Чат | Google Таблицы и скрипты
привет.
для моего вчерашнего вопроса про importrange я нашёл более удобное решение (позволяет делать что угодно с полученными данными, а потом снова их обновить), кстати, в случае с importrange при удалении значения только в первой колонке, в консолидированной таблице удаляется вся строка:

function onOpen() {

var ui = SpreadsheetApp.getUi();
ui.createMenu('Моё меню')
   .addItem('Бросить якорь в C56', 'setAnchor')
   .addItem('Импорт от Операторов', 'importFromOperators')
   .addToUi();
}

function importFromOperators() {

// подготовка места вставки данных в файле Консолидации
var ssBoss = SpreadsheetApp.getActive(); // файл Консолидации (текущий)
var bsSheet = ssBoss.getSheetByName('Лист2'); // название листа в файле Консолидации

var bsLastRow = Math.max(2, bsSheet.getLastRow());

var bsRange = bsSheet.getRange('A2:H'+bsLastRow); // диапазон на листе в файле Консолидации
bsRange.clear(); // очищаем перед новой загрузкой

var values = bsRange.getValues(); // инициализируем массив одной пустой строкой (потом удалим)

// массив идентификаторов файлов Операторов
var operIds = [ '16j-2JOSmbqyWyC2eB3T_dcINBP1cmP1sOvivI2RCaD4' ,
               '1kG37JW8hFoN6ZuyYdSF_PaQ-2fHVSjIrKTe_xY48hBI' ,
               '1gliJdShI_MCGAt8kJP1xkqcEGNKwaDF-U530oNiDW9M' ];

// читаем данные из файлов Операторов (цикл по файлам)
for(var i=0; i<operIds.length; i++) {
   var ssOper = SpreadsheetApp.openById(operIds[i]); // очередной файл Оператора
   var opSheet = ssOper.getSheetByName('Лист1'); // название листа в файле Оператора

   var opLastRow = Math.max(2, opSheet.getLastRow());

   var opRange = opSheet.getRange('A2:H'+opLastRow); // диапазон на листе в файле Оператора
   
   values = values.concat(opRange.getValues()); // добавляем очередные значение в общий массив
}

// удаляем абсолютно пустые строки (массив уплотняется)
for (i=values.length-1; i>=0; i--) {
   if (values[i].toString() == values[0].toString()) {
   values.splice(i, 1);
   }
}

// вставляем консолидированные данные на лист Консолидации
if (values.length) bsRange.offset(0, 0, values.length).setValues(values);  
}
источник

С

Секретарь in Чат | Google Таблицы и скрипты
источник

С

Секретарь in Чат | Google Таблицы и скрипты
там на первом листе importrange, на втором скрипт
источник

С

Секретарь in Чат | Google Таблицы и скрипты
кто знает, почему в таблице importrange в первой колонке на третьей строке всегда другой шрифт?
источник

С

Секретарь in Чат | Google Таблицы и скрипты
я тут выложил развитие вчерашней темы, посмотрите
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
Секретарь
привет.
для моего вчерашнего вопроса про importrange я нашёл более удобное решение (позволяет делать что угодно с полученными данными, а потом снова их обновить), кстати, в случае с importrange при удалении значения только в первой колонке, в консолидированной таблице удаляется вся строка:

function onOpen() {

var ui = SpreadsheetApp.getUi();
ui.createMenu('Моё меню')
   .addItem('Бросить якорь в C56', 'setAnchor')
   .addItem('Импорт от Операторов', 'importFromOperators')
   .addToUi();
}

function importFromOperators() {

// подготовка места вставки данных в файле Консолидации
var ssBoss = SpreadsheetApp.getActive(); // файл Консолидации (текущий)
var bsSheet = ssBoss.getSheetByName('Лист2'); // название листа в файле Консолидации

var bsLastRow = Math.max(2, bsSheet.getLastRow());

var bsRange = bsSheet.getRange('A2:H'+bsLastRow); // диапазон на листе в файле Консолидации
bsRange.clear(); // очищаем перед новой загрузкой

var values = bsRange.getValues(); // инициализируем массив одной пустой строкой (потом удалим)

// массив идентификаторов файлов Операторов
var operIds = [ '16j-2JOSmbqyWyC2eB3T_dcINBP1cmP1sOvivI2RCaD4' ,
               '1kG37JW8hFoN6ZuyYdSF_PaQ-2fHVSjIrKTe_xY48hBI' ,
               '1gliJdShI_MCGAt8kJP1xkqcEGNKwaDF-U530oNiDW9M' ];

// читаем данные из файлов Операторов (цикл по файлам)
for(var i=0; i<operIds.length; i++) {
   var ssOper = SpreadsheetApp.openById(operIds[i]); // очередной файл Оператора
   var opSheet = ssOper.getSheetByName('Лист1'); // название листа в файле Оператора

   var opLastRow = Math.max(2, opSheet.getLastRow());

   var opRange = opSheet.getRange('A2:H'+opLastRow); // диапазон на листе в файле Оператора
   
   values = values.concat(opRange.getValues()); // добавляем очередные значение в общий массив
}

// удаляем абсолютно пустые строки (массив уплотняется)
for (i=values.length-1; i>=0; i--) {
   if (values[i].toString() == values[0].toString()) {
   values.splice(i, 1);
   }
}

// вставляем консолидированные данные на лист Консолидации
if (values.length) bsRange.offset(0, 0, values.length).setValues(values);  
}
отлично, только скрипты в док-те не открываются
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
из-за прав доступа
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
вообще все хорошо, только я бы строки пустые удалял с помощью filter
источник

С

Секретарь in Чат | Google Таблицы и скрипты
Eugeny Namokonov
из-за прав доступа
что надо изменить?
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
data = data.filter(function(row){return row[0] != ""})

вот пример, в массиве останутся только строки с непустым 1ым столбцом
источник

EN

Eugeny Namokonov in Чат | Google Таблицы и скрипты
вместо data - values ваши
источник