@da3

Как импортировать строки по определенным критериям с добавлением триггера?

Помогите, пожалуйста, в написании скрипта для google sheets.

Пришлось заменить importrange на скрипт из-за того, что import стал часто отваливаться.

Условно есть файл "Spreadsheet_1", в котором есть лист "imp_1"
из которого мне нужно импортировать столбцы 1,2,8,10 в файл "Spreadsheet_2" на лист "imp_2"

при условии, что мне нужны только те строки из этих столбцов, которые соответствуют следующим критериям:

* мне нужны только те строки из этих столбцов, где значение в столбце 9 содержится слово "Москва"

и второе условие (одновременно с первым):
* в строках столбца 2 содержится такое же слово, что и в файле "Spreadsheet_2" на листе "info" в ячейке А3

И еще было бы отлично прописать триггер, что обновление скрипта происходит только после того, как в файле "Spreadsheet_1", на листе "imp_1" произошло редактирование.
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Google Apps Script
Учитель, автоэлектрик, программист, музыкант
Можно использовать вот такой костыль:
=еслиошибка(
importrange("ссылка";прописн(диапазон))
;importrange("ссылка";строчн(диапазон))
)

Или такой код:
/**
 * Возвращает массив данных импортированных с таблицы url, с листа sheetName со столбцов columsn
 *
 * @param {String} url Ссылка на таблицу
 * @param {String} sheetName Имя листа
 * @param {Array[Number]} columsn Массив номеров столбцов. A = 1
 * @return Возвращает массив импортированных данных
 */
function importColumns(url, sheetName, columsn) {
  columsn = [...columsn].flat(Infinity).map(column=>-1+column);
  let sourceSpreadsheet = SpreadsheetApp.openByUrl(url);
  let sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);

  let data = sourceSheet.getDataRange().getValues();
  outData = data.map(row=>{    
    return  columsn.map(column=>row[column]);
  });

  return outData;
}

Демонстрационная таблица
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы