function SaveSS() //OK 2025/09/02
{
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
spreadsheet.toast('Creation et sauvegarde image', 'Automation', -1);
var sheetSS = spreadsheet.getSheetByName("SS");
var dateSS = sheetSS.getRange('B1').getValue();
dateSS = Utilities.formatDate(dateSS, "GMT+23:00", "yyyy-MM-dd");
var voieSS = sheetSS.getRange('C1').getValue();
var sensSS = sheetSS.getRange('D1').getValue();
var lastRSS = sheetSS.getLastRow();
if(lastRSS < 3)
{
spreadsheet.toast('Pas de données', 'Automation', -1);
return;
};
var rangeSS =sheetSS.getRange(1,1,lastRSS,4);
var dataSS = rangeSS.getValues();
dataSS[0][1] = dateSS;
var fcSS = rangeSS.getFontColors();
var bgSS = sheetSS.getRange(1,1,lastRSS,1).getBackgrounds();
var fsSS = rangeSS.getFontSizes();
var widthIMG=0;
var cwSS = [];
for(var i=1;i<=4;i++)
{
widthIMG += sheetSS.getColumnWidth(i)*0.8;
cwSS.push(sheetSS.getColumnWidth(i));
};
var heightIMG = 14;
var rhSS = [];
for (var k=1;k<=lastRSS;k++)
{
heightIMG += sheetSS.getRowHeight(k)+2;
rhSS.push(sheetSS.getRowHeight(k));
fsSS.push(sheetSS.getRange(k,1).getFontSize);
}
var html = "<table border='1'>"
spreadsheet.toast('Creation HTML', 'Automation', -1);
//Creation de la table
for (i = 0; i < lastRSS; i++)
{
html += "<tr>"
for (var j = 0; j < 4; j++)
{
//html += "<td>" + dataSS[i][j] + "</td>";
html += "<td style='height:"+rhSS[i]+"px;width:"+ cwSS[j]*0.8 + "px;background:" + bgSS[i][0] + ";color:" + fcSS[i][j] + ";font-size:"+fsSS[i]+"px;'>" + dataSS[i][j] + "</td>";
//html += "<td style='height:"+sheetSS.getRowHeight(i+1)+"px;width:"+ sheetSS.getColumnWidth(j+1)*0.8 + "px;background:" + bgSS[i][j] + ";color:" + fcSS[i][j] + ";font-size:"+fsSS[i][j]+"px;'>" + dataSS[i][j] + "</td>";
}
html += "</tr>";
}
html += "</table>"
spreadsheet.toast('Creation image', 'Automation', -1);
//Creation de l'image
const img = Charts.newTableChart().setDataTable(Charts.newDataTable().addColumn(Charts.ColumnType.STRING, '').addRow([html]).build()).setOption('allowHtml',true).setDimensions(widthIMG,heightIMG).build();
spreadsheet.toast('sauvegarde image', 'Automation', -1);
//Sauvegarde de l'image
const blob = img.getAs('image/png');
blob.setName("TOP "+dateSS+" "+voieSS+" "+sensSS+".png");
spreadsheet.toast('nom du blob', 'Automation', -1);
const folder = DriveApp.getFolderById('xxxxx');
folder.createFile(blob);
spreadsheet.toast('ecriture', 'Automation', -1);
};
I've tried to make it as light as possible with
html += "<td>" + dataSS[i][j] + "</td>";
but it didn't worked (still working with manual launch). It always stops at
const folder = DriveApp.getFolderById('xxxxx');
even if I place it at the beginning of the script.
Thank you for reading me.
PS: SS stands for ScreenShot :D