2017-12-20 18 views
0

私はこれら2つのスクリプトを別々に優れています。 freezeValues()関数は、値を持つセルを数式にコピーし、その値を貼り付けるだけで(数式を削除して値を保持する)、セルの範囲で実行できます。これらの2つのスクリプトを組み合わせて、セルがオレンジ(または任意の色)でハイライト表示されている場合は、「コピー」と「特殊な値を貼り付ける」方法

clearOrange()関数は、背景色がオレンジ色のセルを消去します。これは、条件の書式設定で使用すると効果的です。

オレンジ色で強調表示されているセルをコピーして貼り付けて、セル範囲の数式を効果的に削除できるようにするには、これらのスクリプトの両方の機能が必要です。私はこれらのスクリプトが私のものではないJavaスクリプトと完全な開示に新しいです。これも可能ですか?

function freezeValues() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('DIARY 2017'); // or whatever name 
    var range = sheet.getActiveRange(); // assuming your data appears in A1-Z1 

    range.copyTo(range, {contentsOnly: true}); 
} 

function clearOrange() { 
    var sheet = SpreadsheetApp.getActive().getSheetByName('DIARY 2017'); 
    var range = sheet.getDataRange(); 
    var bgColors = range.getBackgrounds(); 
    for (var i=0; i<bgColors.length; i++) { 
    for (var j=0; j<bgColors[i].length; j++) { 
     if (bgColors[i][j] === '#ff9900') { 
     range.getCell(i+1,j+1).clearContent(); 
     } 
    } 
    } 
} 

答えて

1

ここでは上記のfreezeOrangeの組み合わせです。ほとんどの場合、clearOrange関数に似ていますが、clearステップがコピー&ペースト値に置き換えられています。

function freezeOrange() { 
    var sheet = SpreadsheetApp.getActive().getSheetByName('DIARY 2017'); 
    var range = sheet.getDataRange(); 
    var bgColors = range.getBackgrounds(); 
    for (var i=0; i<bgColors.length; i++) { 
    for (var j=0; j<bgColors[i].length; j++) { 
     if (bgColors[i][j] === '#ff9900') { 
     var cell = range.getCell(i+1,j+1); 
     cell.copyTo(cell, {contentsOnly: true}); 
     } 
    } 
    } 
} 
関連する問題