0

Status 列に特定の値が含まれている場合に行の背景色を設定するスクリプトが Google Docs にあります。問題は、ワークシートに特定の保護された列があることです。そのため、制限されたユーザーが自分のセクションでスクリプトをトリガーすると実行されますが、不快な許可エラー メッセージが表示されます (スクリプトが保護された列の一部に色を付けるため)。したがって、行をチャンクで色付けする 2 つのスクリプトを作成して、制限されたユーザーが個別のステータス メッセージをトリガーしたときに、保護されていない列だけが色付けされるようにする必要があります。行全体に色を付けるコードは次のとおりです (インストール可能な onedit トリガーによってトリガーされます)。

function setBackLogColor() {

 var range = SpreadsheetApp.getActiveSheet().getDataRange();
 var statusColumnOffset = getStatusColumnOffset();

for (var i = range.getRow(); i < range.getLastRow(); i++) { 
 rowRange = range.offset(i, 0, 1);
 status = rowRange.offset(0, statusColumnOffset).getValue();

if (status == 'TO LD') 
{
  rowRange.setBackgroundColor("#cfe2f3");
} 
else if (status == 'TO GB' ) 
{
  rowRange.setBackgroundColor("#d9ead3");
} 
else if (status == 'TO OUTSIDE PARTY - WILL COME BACK' ) 
{
  rowRange.setBackgroundColor("#f4cccc");
} 
 else if (status == 'Hand Delivery 2' ) 
{
  rowRange.setBackgroundColor("#d9ead3");
} 
 else if (status == 'Hand Delivery' ) 
{
  rowRange.setBackgroundColor("#cfe2f3");
} 
else 
{
  rowRange.setBackgroundColor("#FFFFFF");
}
 }
}

//Returns the offset value of the column titled "Status"
//(eg, if the 7th column is labeled "Status", this function returns 6)
function getStatusColumnOffset() {
lastColumn = SpreadsheetApp.getActiveSheet().getLastColumn();
var range = SpreadsheetApp.getActiveSheet().getRange(1,1,1,lastColumn);

for (var i = 0; i < range.getLastColumn(); i++) {
if (range.offset(0, i, 1, 1).getValue() == "Status") {
  return i;
}  
}
}

どんな助けでも大歓迎です!ありがとうございました!

4

1 に答える 1