I have a piece of code I use to import data to several sheets, and it is working fine. But I am trying to also modify all data from a specific column to turn it into an HTML button. The goal is to turn www.mylink.com to Button
Here is the code I use to import data (fetch data, filter it and put it in sheets into a folder)
function myfunction() {
var keywords = ["valuetoremove1", "valuetoremove2"]; // filter the column "C".
// Retrieve CSV data.
var csvUrl = "https://myurl";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent, ";");
// Retrieve Spreadsheet and put the CSV data.
var root = DriveApp.getFoldersByName("Folder1");
while (root.hasNext()) {
var folder = root.next();
var files = folder.getFiles();
while (files.hasNext()) {
var spreadsheet = SpreadsheetApp.open(files.next());
var name = spreadsheet.getName().toUpperCase();
var values = csvData.reduce((ar, r) => {
if (!keywords.some(e => r[2].toUpperCase().includes(e.toUpperCase())) && r.join("").toUpperCase().includes(name)) {
ar.push(r);
}
return ar;
}, []);
if (values.length == 0) continue;
var sheet = spreadsheet.getSheets()[0];
sheet.clearContents().getRange(2, 1, values.length, values[0].length).setValues(values);
I have tried a code to change the link cells in a single page and it works, but not combined with my 1st code, it crashes because there are too much data. Here is what I tried :
// Modify column E
var dataRange = spreadsheet.getDataRange().getValues();
var colData = [];
for (var i = 1; i < dataRange.length; i++) {
colData.push(dataRange[i][0]);
}
for (var i = 0; i < colData.length; i++) {
// Get column E
var comments_cell = spreadsheet.getDataRange().getCell(i + 2, 5).getValue();
// Append
spreadsheet.getDataRange().getCell(i + 2, 5).setValue('<a href="' + comments_cell + '" target="_blank"><button type="button">Button</button></a>');
}
Here is my complete revised script :
function myfunction() {
var keywords = ["removedata1", "removedata2"]; // filter the column "C".
var csvUrl = "https://myurl";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent, ";");
var root = DriveApp.getFoldersByName("Myfolder");
while (root.hasNext()) {
var folder = root.next();
var files = folder.getFiles();
while (files.hasNext()) {
var spreadsheet = SpreadsheetApp.open(files.next());
var name = spreadsheet.getName().toUpperCase();
var values = csvData.reduce((ar, r) => {
if (!keywords.some(e => r[2].toUpperCase().includes(e.toUpperCase())) && r.join("").toUpperCase().includes(name)) {
ar.push(r);
}
return ar;
}, []);
if (values.length == 0) continue;
var sheet = spreadsheet.getSheets()[0];
var v = [["Column1", "Column2", "Column3", "Column", "Column5"], ...values.map(r => {
r[4] = `<a href="${r[4]}" target="_blank"><button type="button">Voir l'offre</button></a>`;
return r;
})];
sheet.clearContents().getRange(1, 1, v.length, v[0].length).setValues(v);
}
}
}