0

嗨,这是我的工作表:https://docs.google.com/spreadsheets/d/1xkTt_1kLyROkUFComi8-NiKyDMan6617C1dA5UqWTSI/edit?usp=sharing如何在Google表格中以适当的格式邮寄细胞范围?

我想在使用谷歌脚本的电子邮件中分享范围A2:F8。 至于我可以说这个脚本工作正常:

function sendMail(){ 
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
var data = sh.getRange("A2:O38").getValues(); 
    //var htmltable =[]; 
var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;' 
var htmltable = '<table ' + TABLEFORMAT +' ">'; 
for (row = 0; row<data.length; row++){ 
htmltable += '<tr>'; 
for (col = 0 ;col<data[row].length; col++){ 
    if (data[row][col] === "" || 0) {htmltable += '<td>' + 'None' + '</td>';} 
    else 
    if (row === 0) { 
     htmltable += '<th>' + data[row][col] + '</th>'; 
    } 
    else {htmltable += '<td>' + data[row][col] + '</td>';} 
} 
    htmltable += '</tr>'; 
} 
    htmltable += '</table>'; 
    Logger.log(data); 
    Logger.log(htmltable); 
MailApp.sendEmail("[email protected]", 'Daily report','' ,{htmlBody: htmltable}) 
} 

问题是,当我收到邮件合并单元格不是合并状态。 这个结果在3列而不是1. 有人可以调整代码,让我得到完全像我格式化的工作表。

回答

1

我稍微修改了代码,因为我不想发送任何电子邮件。如果你将表移动到左上角并使用sh.getDataRange(),那么你将得到整个表没有问题。

这是我修改后的版本。

function sendSomething(){ 
var sh = SpreadsheetApp.getActiveSheet(); 
var dataA = sh.getDataRange().getValues(); 
var None = '&nbsp;'; 
var htmltable =''; 
var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;' 
var htmltable = '<table ' + TABLEFORMAT +' ">'; 
for (row = 0; row<dataA.length; row++) 
{ 
    htmltable += '<tr>'; 
    for(col = 0 ;col<dataA[row].length; col++) 
    { 
    if (dataA[row][col] === "" || 0) 
    { 
     htmltable += '<td>' + None + '</td>'; 
    } 
    else 
    if (row === 0) 
    { 
     htmltable += '<th>' + dataA[row][col] + '</th>'; 
    } 
    else 
    { 
     htmltable += '<td>' + dataA[row][col] + '</td>'; 
    } 
    } 
    htmltable += '</tr>'; 
} 
    htmltable += '</table>'; 
dispStatus('HTML',htmltable,800,500); 
} 

这是我的显示程序,我把它合并到你的代码中。这只是我的记录器版本。

function dispStatus(title,html,width,height,modal) 
{ 
    var title = typeof(title) !== 'undefined' ? title : 'No Title Provided'; 
    var width = typeof(width) !== 'undefined' ? width : 400; 
    var height = typeof(height) !== 'undefined' ? height : 300; 
    var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>'; 
    var modal = typeof(modal) !== 'undefined' ? modal : false; 
    var htmlOutput = HtmlService 
    .createHtmlOutput(html) 
    .setWidth(width) 
    .setHeight(height); 
if(!modal) 
{ 
    SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title); 
} 
else 
{ 
    SpreadsheetApp.getUi().showModalDialog(htmlOutput, title); 
} 
} 

您仍然需要格式化日期。也许你可以使用Utilities,如果你想在头文件中合并单元格,你需要弄清楚哪些给colspan =“3”。