Skip to content

Instantly share code, notes, and snippets.

@biarm
Created March 31, 2014 06:26
Show Gist options
  • Save biarm/9886415 to your computer and use it in GitHub Desktop.
Save biarm/9886415 to your computer and use it in GitHub Desktop.
GAS script for visualizing data collected thru Google form
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