2017-09-13 33 views
0

在Google电子表格的其中一张表单中有一个单元格,我在另一个单元格中引用它。文本得到很好的复制,但没有任何格式。所以,如果我有任何大胆或斜体的文字,它会在参考单元格中显示为正常书写。将文本格式从单元格迁移到引用它的另一个单元格

我已经尝试过下面的脚本,但它不能正常工作。它不是复制整个格式,而是复制单元格边界,并将其复制到下面的多个单元格(总共7个单元格,目标单元格加6下方)。

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var activeSheet = ss.getActiveSheet(); 
    var activeSheetName = activeSheet.getName(); 
    var activeCell = activeSheet.getActiveCell(); 
    if (activeSheet.getName().indexOf("Job ID") != -1 && activeCell.getRow() == 4 && activeCell.getColumn() == 15) { 
    var targetSheet = ss.getSheetByName('Active Jobs'); 
    var jobRowNumber = findJobIdRow(); 
    var sourceCell = activeSheet.getRange(4,1,15,1); 
    sourceCell.copyFormatToRange(targetSheet, 16, 16, jobRowNumber, jobRowNumber); 
    } 
} 

function findJobIdRow() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var jobID = ss.getActiveSheet().getRange(2,1).getValue(); 
    var column = ss.getSheetByName('Active Jobs').getRange(2,1,ss.getSheetByName('Active Jobs').getMaxRows()-2,1); 
    var values = column.getValues(); // get all data in one call 
    for(var ct = 0; ct < values.length-1; ct++){ 
    if(values[ct][0] == jobID){ 
     var ct = ct+2; 
     break; 
    } 
    } 
    return ct; 
} 

回答

1

首先,你的getRange调用可能包含一个错误: 你写

var sourceCell = activeSheet.getRange(4,1,15,1); 

,但是这个范围并不是一个单细胞,这是一个15×1,从A4开始范围。顺序是(row,column,numRows,numColumns)。也许你的意思

var sourceCell = activeSheet.getRange(4,15,1,1); 

其次,我建议使用copyTo方法,它有取代的“复制... ToRange”方法的功能选项。

var targetRange = targetSheet.getRange(...); 
sourceCell.copyTo(targetRange, {formatOnly: true}); 
相关问题