For循环中的彩色行,用于分配类别以形成提交

时间:2019-06-21 21:16:21

标签: google-apps-script google-sheets

我在表单提交的触发器上设置了一个for循环。每次提交内容时,它都会检查行是否已分类。如果没有,它将添加一个类别。我想将颜色分配作为分类的附加步骤。如果分类为A,则分类为蓝色,如果分类为B,则分类为黄色。

我已经根据其他StackOverflow帖子尝试了以下代码。没有运气。

function eventCategorization() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = sheet.setActiveSheet(sheet.getSheetByName('Form Responses 1')); //Update Sheet Name here
  Logger.log("sheet: " + activeSheet.getSheetName());

  var startRow = 3;  // First row of data to process
  var numRows = activeSheet.getLastRow() - 1;   // Number of rows to process
  var totalColumns = activeSheet.getMaxColumns();

  // Fetch the range of all cells with responses
  var dataRange = activeSheet.getRange(startRow, 1, numRows, totalColumns)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];  
    var broadEventType = row[11];
    Logger.log("broadEventType: "+broadEventType);

    var groupedEvent = row[1];
    Logger.log("groupedEvent: "+groupedEvent)

    if (groupedEvent ==""){
      if (broadEventType =="Gala"){
        activeSheet.getRange(i+3,2).setFormulaR1C1('="Expensive"');
        row.getRow().setBackgroundColor("#99CC99");
        activeSheet.getRange(i+3,2).getRow().setBackgroundColor("#99CC99");
      }
    }
    else if(broadEventType =="Picnic"|| 
            broadEventType=="Beach Trip"||
            broadEventType=="Drinks"){
      activeSheet.getRange(i+3,2).setFormulaR1C1('="Cheap"');
      activeSheet.getRange(i+3,2).getRow().setBackgroundColor("#4286f4");
    }
  }  
} 

错误消息:

  

TypeError:在对象“,”,“ Y”,“ Jill DesRosier”,“,”,“内部”中找不到函数getRow

2 个答案:

答案 0 :(得分:1)

function eventCategorization() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = sheet.setActiveSheet(sheet.getSheetByName('Form Responses 1')); //Update Sheet Name here
  Logger.log("sheet: " + activeSheet.getSheetName());

  var startRow = 3;  // First row of data to process
  var numRows = activeSheet.getLastRow() - 1;   // Number of rows to process
  var totalColumns = activeSheet.getMaxColumns();

  // Fetch the range of all cells with responses
  var dataRange = activeSheet.getRange(startRow, 1, numRows, totalColumns)
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];  
    var broadEventType = row[11];
    Logger.log("broadEventType: "+broadEventType);

    var groupedEvent = row[1];
    Logger.log("groupedEvent: "+groupedEvent)

    if (groupedEvent ==""){
      if (broadEventType =="Gala"){
        activeSheet.getRange(i+3,2).setFormulaR1C1('="Expensive"');
        var activeRow = activeSheet.getRange(i+3,1,1,totalColumns).setBackgroundColor("#CC6666");
      }
    }
    else if(broadEventType =="Picnic"|| 
            broadEventType=="Beach Trip"||
            broadEventType=="Drinks"){
      activeSheet.getRange(i+3,2).setFormulaR1C1('="Cheap"');
var activeRow = activeSheet.getRange(i+3,1,1,totalColumns).setBackgroundColor("#4286f4");
    }
  }  
} 

答案 1 :(得分:0)

我发现使用条件格式为行着色比尝试显式设置颜色容易得多。

您可以根据行中一个或多个单元格的内容为整行设置颜色。

Google Sheets Conditional Formatting based on two cells