基于选中框的Google表格编辑表

时间:2018-11-14 13:08:25

标签: google-apps-script

Sample Sheet

我在sheet2设置中的A列中包含工作订单的完整列表。在B列中,我有一个简单的标记“ TRUE”来表示工作已完成。在sheet1中,我有一个过滤器,仅显示sheet2中B列中未标记为“ TRUE”的订单。在sheet1中的订单列表旁边是复选框。我想要一个可以在选中复选框时读取的脚本,读取复选框旁边的项目,将复选框选中“ FALSE”以将其清除,然后将sheet2中B列中的相应行标记为“ TRUE”,因此项目将列表保留在sheet1上。

我将使用“编辑时触发”触发器来设置脚本,但是在创建可以执行这些功能的脚本方面需要帮助。

1 个答案:

答案 0 :(得分:0)

经过大量搜索和自我调试之后,我想到了这个。这样看起来还好吗?我将把它放在有成千上万个条目的电子表格中。我不希望它效率低下。

function MarkComplete() {
  var ss = SpreadsheetApp.getActive();                //Loading Current spreadsheet
  var Display = ss.getSheetByName("Display");         //Loading Display sheet
  var Complete = ss.getSheetByName("Complete");       //Loading Complete sheet
  var data1 = Display.getDataRange().getValues();     //Loading data from sheet 1
  var data2 = Complete.getDataRange().getValues();    //Loading data from sheet 2

  for(var i = 0; i<data1.length;i++){
    Logger.log('List item : ' + data1[i][0]);
    Logger.log('Checked : ' + data1[i][1]);         

    if(data1[i][1] == true){                        //Looking for rows in Display that are checked.
      Logger.log('TRUE : ' + data1[i][0]);

      for(var n = 0; n<data2.length;n++){ 
        if(data2[n][0] == data1[i][0]){               //Looking for rows in Complete that match checked rows in Display
          Complete.getRange(n+1,2).setValue("=true");    //set row x column 2 to true in complete
          Display.getRange(i+1,2).setValue("false");    //set row i column 2 to false in display
        }
      }
    }
  }
}