, поскольку в заголовке указано, что я пытаюсь найти способ обработки некоторых данных в таблицу в приложение Google. Я думаю, что лучший способ - прямо привести пример и заранее поблагодарить вас за вашу поддержку, как всегда.значения слияния в столбце в строке с разделителем кавычек «|» на основе сравнения со значениями другого столбца
просто:
sheet1 (colA, colB)
sheet2 (colA', colB')
sheet1
colA colB
1 xxx 40
2 xxx 42
3 yyy 42
4 yyy 44
. ... etc.
sheet2
colA' colB'
1 xxx 40 | 42
2 yyy 42 | 44
3 ... .. | .. (etc.)
Я был бы признателен за подсказку коды для Google App сценария. благодаря
GĮ
EDIT (в процессе)
привет,
Я надеюсь, что общий доступ к файлу ответить на ваши вопросы.
листы уже существуют, код написан частично, и мне нужна помощь в этом.
нет дублирования в ColumnB для статьи ххх или ууу или ZZZ и др ..
в листе «sheet_demo» указывает на то, что сценарий должен быть.
function merge_col() {
var sheet = SpreadsheetApp.openById("0AiuqXkUqDMgzdFM5aVNxeEhPbWFmbGhybl9TVkt4ZWc");
var ss_sorg = sheet.getSheetByName('sheet1');
var ss_dest = sheet.getSheetByName('sheet2');
var sorg_data = ss_sorg.getRange("A2:C").getValues();
var dest_data = ss_dest.getRange("A2:C").getValues();
var dest_Cod = [];
var dest_Des = [];
var temp_Cod, temp_Des;
for (var i = 0; i < sorg_data.length; i++) {
temp_Cod = null;
temp_Des = null;
for (var j = 1; j < sorg_data.length; j++) {
if (sorg_data[i][0] == sorg_data[j][0].toString().match(sorg_data[i][0]) && sorg_data[i][0] != "") {
temp_Cod = sorg_data[i][1];
temp_Des = sorg_data[i][2];
break;
}
}
dest_Cod.push([temp_Cod]);
dest_Cod.join('|');
dest_Des.push([temp_Des]);
dest_Des.join('|');
}
if (dest_Cod.length > 0 || dest_Des.lenght > 0) {
ss_dest.getRange(2, 2, dest_Cod.length, 1).setValues(dest_Cod); Logger.log(dest_Cod)
ss_dest.getRange(2, 3, dest_Des.length, 1).setValues(dest_Des); Logger.log(dest_Des)
}
}
EDIT (FINAL) ТКС Serge!
function merge_col() {
var ss = SpreadsheetApp.getActive().getSheetByName('sheet1');
var data = ss.getDataRange().getValues();
var header = data.shift();
var col1 = data[1][0];
var col2 = '';
var col3 = '';
var dataSheet2 = [header];
for(var i=0 ; i<data.length ; i++){
Logger.log(data[i][0]+' - '+col1+' - '+data[i][2])
if(col1==data[i][0]){
col1 = data[i][0];
col2+=data[i][1]+' | ';
col3+=data[i][2]+' | ';
}else{
dataSheet2.push([col1,col2,col3]);
var col1 = data[i][0];
col2 = data[i][1]+' | ';
col3 = data[i][2]+' | ';
}
}
dataSheet2.push([col1,col2,col3]);
Logger.log(dataSheet2);
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
sheet2.clear();
sheet2.getRange(1, 1, dataSheet2.length, dataSheet2[0].length).setValues(dataSheet2);
}
Всего несколько вопросов: вы пробовали какой-то код? Есть ли более 2 случаев появления одного и того же элемента xxx или yyy? Ли лист уже существует? –
Спасибо, теперь это совершенно ясно :-) –