Created
March 31, 2014 06:26
-
-
Save biarm/9886415 to your computer and use it in GitHub Desktop.
GAS script for visualizing data collected thru Google form
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function restructure() { | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
//указываем на таблицу, в которой мы работаем | |
var sourceSheet = ss.getSheetByName("Form Responses 1"); | |
//указываем на лист, из которого берем данные | |
var targetSheet = ss.getSheetByName("Sheet2"); | |
//указываем на лист, в который записываем данные | |
var headers = sourceSheet.getRange(1, 1, 1, sourceSheet.getLastColumn()).getValues()[0]; | |
var rows = sourceSheet.getRange(1, 1, sourceSheet.getLastRow()).getValues(); | |
targetSheet.getRange("A1").setValue("source"); | |
targetSheet.getRange("B1").setValue("target"); | |
//указываем необходимые диапазоны данных | |
var lastRow = targetSheet.getLastRow() | |
for (j = 1; j < rows.length; j++) { | |
var lastRow = targetSheet.getLastRow() | |
for (i = 1; i < headers.length; i++) { | |
//задаем цикл для прочтения данных в обоих листах | |
switch (headers[i]) { | |
case "Ваше имя": | |
var target = targetSheet.getRange(lastRow+1, i); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Ключевая тема 1": | |
var target = targetSheet.getRange(lastRow+1, i); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 1 Эксперт 1": | |
var parTarget = targetSheet.getRange(lastRow+2,1); | |
sourceSheet.getRange(j+1, i).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+2, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 1 Эксперт 2": | |
var parTarget = targetSheet.getRange(lastRow+3,1); | |
sourceSheet.getRange(j+1, i-1).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+3, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 1 Эксперт 3": | |
var parTarget = targetSheet.getRange(lastRow+4,1); | |
sourceSheet.getRange(j+1, i-2).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+4, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Ключевая тема 2": | |
var parTarget = targetSheet.getRange(lastRow+5,1); | |
sourceSheet.getRange (j+1, i-4).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+5,2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 2 Эксперт 1": | |
var parTarget = targetSheet.getRange(lastRow+6,1); | |
sourceSheet.getRange(j+1, i).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+6, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 2 Эксперт 2": | |
var parTarget = targetSheet.getRange(lastRow+7,1); | |
sourceSheet.getRange(j+1, i-1).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+7, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 2 Эксперт 3": | |
var parTarget = targetSheet.getRange(lastRow+8,1); | |
sourceSheet.getRange(j+1, i-2).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+8, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Ключевая тема 3": | |
var parTarget = targetSheet.getRange(lastRow+9,1); | |
sourceSheet.getRange (j+1, i-8).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+9,2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 3 Эксперт 1": | |
var parTarget = targetSheet.getRange(lastRow+10,1); | |
sourceSheet.getRange(j+1, i).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+10, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 3 Эксперт 2": | |
var parTarget = targetSheet.getRange(lastRow+11,1); | |
sourceSheet.getRange(j+1, i-1).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+11, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
case "Тема 3 Эксперт 3": | |
var parTarget = targetSheet.getRange(lastRow+12,1); | |
sourceSheet.getRange(j+1, i-2).copyTo(parTarget); | |
var target = targetSheet.getRange(lastRow+12, 2); | |
sourceSheet.getRange(j+1, i+1).copyTo(target); | |
break; | |
default: | |
Browser.msgBox('При переносе данных произошла ошибка!', Browser.Buttons.OK_CANCEL); | |
//запускаем процесс перенесения данных из первого листа во второй | |
//условия, указанные в "case" должны точно соответствовать названиям столбцов | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment