プロジェクトを管理するためにドキュメントスプレッドシートを使用しています。各行はタスクを表し、日付は日付の近接度に従って条件付きでフォーマットされた単一のセルに含まれます。
その色を検索し、その色のセルが出現する行を新しいページの行にコピーしたいと思います。
例えば。今日=赤、明日=緑の場合、今日発生するすべてのタスクを別のページに移動できるようにしたいと思います。
ここでの助けは素晴らしいでしょう。それが不可能かもしれないことを感謝します:<
プロジェクトを管理するためにドキュメントスプレッドシートを使用しています。各行はタスクを表し、日付は日付の近接度に従って条件付きでフォーマットされた単一のセルに含まれます。
その色を検索し、その色のセルが出現する行を新しいページの行にコピーしたいと思います。
例えば。今日=赤、明日=緑の場合、今日発生するすべてのタスクを別のページに移動できるようにしたいと思います。
ここでの助けは素晴らしいでしょう。それが不可能かもしれないことを感謝します:<
これは非常に簡単で、このフォーラムで検索するといくつかの例が表示されるはずです...とにかく、これを取得する方法です。テストするために緑を選択しました...より多くの色を簡単に変更/組み合わせることができます。
function copyGreenRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var colors = sh.getDataRange().getBackgrounds();// get the colors
var data = sh.getDataRange().getValues(); // get corresponding data
var datatoCopy = [];
Logger.log(colors);
for(var c in colors){
var rowcolors = colors[c].toString();
if(rowcolors.indexOf('#00ff00')!=-1){ // check if this color is in this row
datatoCopy.push(data[c]);// if so, copy the data to an array
}
}
var newsheet = ss.insertSheet().getRange(1,1,datatoCopy.length,datatoCopy[0].length).setValues(datatoCopy);// bulk write to the new sheet
}
注: メインシートの色を確認するには、スクリプトで使用されているすべてのセルのカラーコードを表示するロガーを確認してください。
上記の投稿には同意しますが、データはすでに配列であるため、必要以上の作業を実行しています。代わりに、「getValues()」を使用したときに作成した「データ」配列からそれらを削除してください。不要な配列を作成していないため、これにより少し時間を節約できます。
function copyGreenRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var colors = sh.getDataRange().getBackgrounds();// get the colors
var data = sh.getDataRange().getValues(); // get corresponding data
Logger.log(colors);
for(c=0 ; c< data.length; ++c){
var rowcolors = colors[c].toString();
if(rowcolors.indexOf('#00ff00') !=-1){ // check if this color is not present
continue; //if it is the color we want move along
}
else
{
data.splice(c,1); //Remove it from our array
}
}
var newsheet = ss.insertSheet().getRange(1,1,data.length,data[0].length).setValues(data);
// bulk write to the new sheet
}