xyz
xyz

Reputation: 2300

Concatenation of single quote marks Google Script

I have three columns of data

selector                                            label     option list
time you personally have been engaged with uscan    label_1   Arts
time you personally have been engaged with uscan    label_2   Children’s Issues
time you personally have been engaged with uscan    label_3   Coaching
time you personally have been engaged with uscan    label_4   Community Development
time you personally have been engaged with uscan    label_5   Conflict
time you personally have been engaged with uscan    label_6   Consulting

I am trying to concatenate these columns so that in the 4th column I get

option {
label: "Label_1;
selector: ["time you personally have been engaged with uscan"="Arts"];
}

option {
label: "Label_2;
selector: ["time you personally have been engaged with uscan"="Children’s Issues"];
}
etc

My attempt

result[i] = [""option {label:""" + values[i][0] + "";" + "selector: [" + values[i][0] + ""=" +  + values[i][1] + ""];}"];

Foiled by all the single quotes that are required

Thank you

GS

function OptionsList() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OptionList");
  var lr = sheet.getLastRow();
  var values = sheet.getRange(2, 1, lr,3).getValues();
  var result = [];

  //Add items to results
  for(var i=0; i<lr; i++){

    result[i] = [""option {label:""" + values[i][0] + "";" + "selector: [" + values[i][0] + ""=" +  + values[i][1] + ""];}"];

}

//Post back to column 4 starting on row 2
sheet.getRange(2, 4, lr, 1).setValues(result);
}

Upvotes: 0

Views: 1717

Answers (1)

Tanaike
Tanaike

Reputation: 201513

How about this modification?

Modification points :

  • About result[i]
    • " was escaped like \".
    • Line break was added like \n.
  • Remove the empty cells by filter().

Modified script :

function OptionsList() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OptionList");
  var lr = sheet.getLastRow();
  var values = sheet.getRange(2, 1, lr, 3).getValues();
  values = values.filter(function(e){return e[0] && e[1] && e[2]}); // Added
  var result = [];
  //Add items to results
  for(var i=0; i<values.length; i++){ // Modified
    result[i] = ["option {\nlabel: \"" + values[i][1] + ";\n" + "selector: [\"" + values[i][0] + "\"=\"" + values[i][2] + "\"];\n}"]; // Modified
  }
  //Post back to column 4 starting on row 2
  sheet.getRange(2, 4, result.length, 1).setValues(result); // Modified
}

Note :

  • For example, is it required to be " after "Label_1 of label: "Label_1;? If you want, please modify as follows.
    • + values[i][1] + "\";\n"

Reference :

If I misunderstand your question, please tell me. I would like to modify it.

Upvotes: 1

Related Questions