2017-09-13 12 views
0

Googleスプレッドシートのシートの1つに、別のセルで参照しているセルがあります。テキストは正常にコピーされますが、フォーマットは一切ありません。だから私は太字またはイタリックの書いている場合は、参照されたセルで通常の書き込みとして表示されます。セルからテキストを参照する別のセルへのテキスト書式の移行

私は以下のスクリプトを試しましたが、うまく動作しません。書式全体をコピーするのではなく、セルの枠線だけをコピーし、それを下の複数のセルにコピーします(合計7セル、ターゲット1と下の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); 

を書くが、この範囲は、単一のセルではない、それはA4から始まる15バイ1の範囲です。順序は(行、列、numRows、numColumns)です。おそらく、あなたは

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

セカンドを意味し、私は「コピー...にtOrange」メソッドの機能に取って代わる選択肢を持っているcopyTo方法を、使用することをお勧め。

var targetRange = targetSheet.getRange(...); 
sourceCell.copyTo(targetRange, {formatOnly: true}); 
関連する問題