2016-12-31 3 views
1

Я немного потянул свои волосы, пытаясь написать условный скрипт Google Apps для листов Google. Лист имеет 5 вкладок. В принципе, лист получает данные из формы Google. Клиенты заполняют форму и заполняют нашу вкладку «Мастер» листа.Скрипт Google apps - импорт значений листа из другого листа

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

Итак, если строке 2 присвоено значение «Миранда», некоторые данные перейдут на вкладку «Миранда». Для аргумента можно сказать, что столбец D и E этой конкретной строки переместится на столбец A вкладки «Миранда».

Вот что я придумал до сих пор:

function importStudent() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var master_sheet = ss.getSheetByName("Master"); 
    var miranda_sheet = ss.getSheetByName("Miranda"); 
    var columnT = master_sheet.getRange("T1:T").getValues(); 
    var columnD = master_sheet.getRange("D1:D").getValues(); 
    var columnE = master_sheet.getRange("E1:E").getValues(); 
     for(var i = 0; i <= columnT; i++) { 
      if (columnT[i][0] === "Miranda") { 
       var miranda_row = (miranda_sheet.getLastRow() + 1); 
       var active_row = SpreadsheetApp.setActiveRange(columnT[i].getRow()); 
       var selectionFirst = columnD.setActiveRange(active_row:columnD); 
       var selectionLast = columnE.setActiveRange(active_row:columnE); 
       var fullName = selectionFirst + " " + selectionLast; 
       fullName.copyValuesToRange(miranda_sheet, 1, 1, miranda_row, miranda_row); 
      } 
     } 
} 

Код ниже сломана, и я ищу мало указаний, чтобы сделать его работу. Сразу же, я знаю, что у меня есть как минимум две проблемы: 1 слишком много переменных, и 2 я не уверен, что могу передать переменную в качестве параметра для класса setActiveRange(). Итак, мои вопросы:

Как это можно очистить? И что (класс?) Я должен использовать, чтобы сделать его функциональным?

PS - Я все еще считаю себя новичком, когда дело доходит до JavaScript. У меня есть знания, но практическое приложение - это то, что я еще изучаю :)

ответ

4

не уверен, что вам нужно использовать скрипт, чтобы делать то, что вы пытаетесь. Почему бы не использовать формулу запроса?

Например:

= запрос (Мастердата: A: E, "SELECT D, E, ГДЕ = 'Miranda'", 0)

Существует некоторая помощь по запросам here. Вы также можете запрашивать таблицы. То есть вы можете назначить Миранда своей собственной электронной таблицей, которая поступает из ваших основных данных.

Пожалуйста, поделитесь со мной данными о типовых таблицах, если вам нужна дополнительная помощь.

+1

Я считаю, что диапазон должен включать столбцы D и E, если они показаны: '= запрос (MasterData!: A: E," SELECT D, E WHERE A = "Miranda" ", 0)' –

+0

Я думал об использовании запроса, но не каждый ли отдельный учитель должен поставить запрос в каждый раз, когда они хотят импортировать? Кроме того, это небольшой образец некоторой функциональности, которую они хотят, но является основополагающим. Все остальные вещи будут легко реализованы, но я подумал, что лучше использовать функцию, которую они могут выбрать из меню – Jensen010

+0

[Вот этот лист] (https://docs.google.com/ электронные таблицы/d/1RC3-m1pnzjO2zgw4TwA5_PvK2dJZ4DwEPDml7yoRQmU/редактировать? УСП = обмен) – Jensen010

Смежные вопросы