元のシート「パスコ」のfunction checkDate(row)
の(実際の)行だけの背景色を変更するにはどうすればよいですか?これは可能ですか?「真」の行のみ背景色を変更するにはどうすればよいですか?
スクリプトについて少し:
日付範囲がfunction getDateRange()
を介して入力されるが、シート内のすべての行は、「パスコ」彼らはfunction checkDate(row)
を通じてその日付の範囲を満たしている場合にチェックされます。日付範囲(true)を満たしていれば、function filterRows()
は基本的に「パスコ」シートから行をフィルタリングし、別のシート「パスコのコピー」に移動します。
私の質問をするもう一つの方法は、 "Pasco"シートで "true"だったすべての行の範囲を取得する方法です。 「パスコ」が日付順にソートされなかった場合、これは複数の範囲を意味する可能性があります。一度私は範囲を持っていると、私は背景を簡単に変更することができるだろう。
スクリプトをテストする場合は、「パスコ」と「パスコのコピー」の2枚のシートを作成してください。 'パスコ'列2から出発して、いくつかの日付を列1(列8)に置きます。実際のフィルタリングを表示する。 'Copy of Pasco'は、実行ごとに削除/作成されます。
は、私はあなたのコードを読んで、あなたに完全な答えを与えるために時間を持っていませんが、あなただけのシートとのセットを通過するループを追加することができ
var globalStartDate;
var globalEndDate;
function getDateRange(){
var startui = SpreadsheetApp.getUi();
var startprompt = startui.prompt('Start Date', 'Enter a date in m/d/y format', startui.ButtonSet.OK_CANCEL);
var startdate = new Date(startprompt.getResponseText());
var startdatemilliseconds = startdate.getTime();
Logger.log(startdate);
Logger.log(startdatemilliseconds);
globalStartDate = startdatemilliseconds;
var endui = SpreadsheetApp.getUi();
var endprompt = endui.prompt('End Date', 'Enter a date in m/d/y format', endui.ButtonSet.OK_CANCEL);
var enddate = new Date(endprompt.getResponseText());
var enddatemilliseconds = enddate.getTime();
Logger.log(enddate);
Logger.log(enddatemilliseconds);
globalEndDate = enddatemilliseconds;
}
function checkDate(row) {
Logger.log(row[8].getTime() <= globalEndDate && row[8].getTime() >= globalStartDate);
return (row[8].getTime() <= globalEndDate && row[8].getTime() >= globalStartDate); // Check column H
}
function filterRows() {
var Spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = Spreadsheet.getSheetByName('Pasco');
var sheetdelete = Spreadsheet.getSheetByName('Copy of Pasco');
Spreadsheet.deleteSheet(sheetdelete);
Spreadsheet.setActiveSheet(sheet1);
Spreadsheet.duplicateActiveSheet();
var headers = 1; // # rows to skip
var sheet2 = Spreadsheet.getSheetByName('Copy of Pasco');
var range = sheet1.getDataRange();
var data = range.getValues();
var headerData = data.splice(0,headers); // Skip header rows
getDateRange();
var filteredData = data.filter(checkDate);
var outputData = headerData.concat(filteredData); // Put headers back
Logger.log(filteredData)
sheet2.clearContents(); // Clear content, keep format
// Save filtered values
sheet2.getRange(1, 1, outputData.length, outputData[0].length).setValues(outputData);
}
あなたができるかどうか、私は本当に、私はあなたの答えは私の問題を解決する可能性を秘めていると思いますが、あなたを介して読む時間があればいいのに後で、読んで、コードを微調整してください。 –
上記を参照してください。これは必要なものですか? –
私たちははるかに近いです!問題は、バックグラウンドを行でなくてはならない行、コードでIF文に失敗する行に変更していることです。私の1つのテストでは、実際にはヘッダー行(行1)も変更されました。チェックしなければならない日付は、第1列にあります。スクリプト全体をテストすることができたら、必要なシートを作成し、日付を入力してください。私は本当にあなたの助けに感謝します! =) –