在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;
}
答案 0 :(得分:1)
首先,您对getRange的调用可能包含错误: 你写的
var sourceCell = activeSheet.getRange(4,1,15,1);
但这个范围不是单个单元格,从A4开始是15比1的范围。顺序是(row,column,numRows,numColumns)。也许你的意思是
var sourceCell = activeSheet.getRange(4,15,1,1);
其次,我建议使用copyTo方法,该方法具有取代“copy ... ToRange”方法功能的选项。
var targetRange = targetSheet.getRange(...);
sourceCell.copyTo(targetRange, {formatOnly: true});