Skip to content

Instantly share code, notes, and snippets.

@oshliaer
Last active December 28, 2018 14:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oshliaer/844c9c135233f37ce985a88c036e8644 to your computer and use it in GitHub Desktop.
Save oshliaer/844c9c135233f37ce985a88c036e8644 to your computer and use it in GitHub Desktop.
verticallyMerger

verticallyMerger

FROM

    | partner | id        | email               | status | type | group | details              |
    |---------|-----------|---------------------|--------|------|-------|----------------------|
    | YESTKBW | Wednesday | wednesday@gmail.com | YES    | 0    | 11    | kgplqolgbmdxenwpehyn |
    | ZBSDCUY | Wednesday | wednesday@gmail.com | YES    | 0    | 11    | upujkpekm tmqfzpca   |
    | RBGBHNK | Wednesday | wednesday@gmail.com | YES    | 0    | 11    | iky k gtlffdyukngwlo |
    | UXJGHLW | Saturday  | saturday@gmail.com  | NO     | 0    | 11    | mjdmodggygxkydxifxny |
    | UZHNECM | Friday    | friday@gmail.com    | YES    | 1    | 22    | wpboajbemueskbuyjqeg |
    | XACTUOK | Tuesday   | tuesday@gmail.com   | NO     | 2    | 33    | rxnwkpmegng bobjdqlz |
    | EIOBZXS | Tuesday   | tuesday@gmail.com   | NO     | 2    | 33    | rwqxxwoeanxqsbpbwx j |

TO

    | partner | id        | email               | status | type | group | details              |
    |---------|-----------|---------------------|--------|------|-------|----------------------|
    | YESTKBW | Wednesday | wednesday@gmail.com | YES    | 0    | 11    | kgplqolgbmdxenwpehyn |
    | ZBSDCUY |           |                     |        |      |       | upujkpekm tmqfzpca   |
    | RBGBHNK |           |                     |        |      |       | iky k gtlffdyukngwlo |
    | UXJGHLW | Saturday  | saturday@gmail.com  | NO     | 0    | 11    | mjdmodggygxkydxifxny |
    | UZHNECM | Friday    | friday@gmail.com    | YES    | 1    | 22    | wpboajbemueskbuyjqeg |
    | XACTUOK | Tuesday   | tuesday@gmail.com   | NO     | 2    | 33    | rxnwkpmegng bobjdqlz |
    | EIOBZXS |           |                     |        |      |       | rwqxxwoeanxqsbpbwx j |
  • Merges columns vertically by key-column
  • An example Don't forget take a look at Script Editor. Run run()
function verticallyMerger(sheet, blocks){
/*
{
columns: [],
rows: [[index, count],[index, count]]
}
*/
for (var i = 0; i < blocks.rows.length; i++){
for (var j = 0; j < blocks.columns.length; j++){
sheet.getRange(blocks.rows[i][0], blocks.columns[j], blocks.rows[i][1]).mergeVertically();
}
}
return sheet;
}
function blockBilder(sheet, initialBlocks){
var blocks = initialBlocks;
blocks.rows = [];
var values = sheet.getRange(1, blocks.mergerColumn, sheet.getLastRow()).getValues();
var isNew = true;
var prevVal;
for(var i = 0; i < values.length; i++){
if(prevVal === values[i][0]){
if(isNew){
blocks.rows.push([i , 2]);
isNew = false;
} else {
blocks.rows[blocks.rows.length - 1][1]++;
}
} else {
prevVal = values[i][0];
isNew = true;
}
}
return blocks;
}
function run(){
var sheet = SpreadsheetApp.getActiveSheet();
var blocks = blockBilder(sheet, {mergerColumn : 2, columns: [2, 3, 4, 5, 6]});
verticallyMerger(sheet, blocks);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment