さて、これをざっと見てみると、セルの範囲内の値を調べ、それらを正規表現と比較し、結果に基づいてセルの色を変更したいようです。以前に Google ドキュメント API を使用したことがないことを覚えておいてください。既存のコードにいくつかの小さな問題があるようです。
まず、正規表現を正しく作成する必要があります。
あなたの行:
var arrPatterns = new Array("^([A-Z]{2}(-[0-9]{5}){4})$", "^[A-Z]{2}$", "^[0-9]{5}$", "^[a-z]{1,}$", "^\(\d\d\d\) \d\d\d-\d\d\d\d$", "^([a-z0-9]{1,}[,]{0,}){1,}$", "^(\d\d?:\d\d[aApP][mM] - \d\d?:\d\d[aApP][mM])|(Closed)|(All Day)$");
なります:
var arrPatterns = [/^([A-Z]{2}(-[0-9]{5}){4})$/, /^[A-Z]{2}$/, ... /^(\d\d?:\d\d[aApP][mM] - \d\d?:\d\d[aApP][mM])|(Closed)|(All Day)$/];
そこにある 2 つの変更はnew Array
、リテラル配列構文[ ]
(オプションですが、良い習慣と見なされます) を使用することと、配列文字列内の引用符をスラッシュ (正規表現リテラル構文) に置き換えることを支持して削除されています。結果は、文字列ではなく、正規表現オブジェクトの配列になります。re.test("some string");
これにより、評価コードで行ったのと同じようなことを実際に行うことができます。
次に、セルの範囲をループし、それらの値を取得して比較する必要があります。ドキュメントを簡単に調べると、がオブジェクトをsheet.getRange
返すことがわかりRange
ます。範囲オブジェクトには、getValues
セル値の配列の配列 (array[][]) を返すメソッドがあります。
したがって、必要なもののすぐに近似するコードは次のとおりです。
var rRange = sheet.getRange(arrLetters1(i) + intRange1, arrLetters2(i) + intRange2);
var values = rRange.getValues();
var re = arrPatterns[0];
var row, col;
for (row = 0; rows < values.length; row++) {
for (col = 0; col < values[row].length; col++) {
if (re.test(values[row][col])) {
/*do passes regex, looks like you probably need to pass the row/col to getCell
to get a range with the desired cell in it and then call setBackgroundColor on
that range. I'm also leaving looping through your array of regular expressions to you,
as it looked like you have a dependency on the expression being used and the array of
letters i didn't take the time to understand.*/
}
else {
//do fails regex
}
}
}