0

我正在尝试创建一个代码来检查单元格是否选中(或未选中)复选框,然后将数据从该行上的相应单元格复制到另一个“摘要”表上。“如果检查则复制数据”部分未包含在下面。

我遇到的问题是 getValues 和 getBackgound 似乎都没有返回数据。

当我运行我的代码时,记录器显示每个复选框的值都是“假的”(即使有些被选中并且我使用电子表格设置中的数据验证将它们的值设置为 1(选中)和 0(未选中))。

如果我切换到 getBackgrounds,记录器会显示每个单元格的背景都是白色的“#ffffff”,即使单元格是红色的。

[[我希望我的代码遍历每个工作表、行和列。它似乎迭代得很好,但没有检索数据。]]

我做错了什么?这是我的完整代码:

function MAPSuccess() {
var app = SpreadsheetApp;
var ss = SpreadsheetApp.openByUrl(
     'https://docs.google.com/spreadsheets/d/1UUdiLsz2OvKdqnr2KB0Tx74gzrGx0m4XUA5oNMUB06k/edit');
var allsheets = ss.getSheets();
  var s = ss.getNumSheets();
  var master = app.getActiveSpreadsheet().getSheetByName("Master");
  var masterLastRow = master.getLastRow();
  

  for (var s = 2; s < allsheets.length; s++) { 
var sheet = app.getActiveSpreadsheet().getActiveSheet();
var r = sheet.getCurrentCell().getRow();    
var lastrow = sheet.getLastRow();
var lastcol = sheet.getLastColumn();
var temail = sheet.getRange(1,2);
var tSJCOE = sheet.getRange(2,2);
var c = sheet.getActiveCell().getColumn();

  for(var r = 4;r<=lastrow;r++){

var name= sheet.getRange(r,1).getValue();
var lname= sheet.getRange(r,2).getValue();
var email= sheet.getRange(r,3).getValue();
var pemail= sheet.getRange(r,4).getValue();
    var info = [
      [name, lname, email, pemail]
      ]
var range = sheet.getRange(r,1,1,lastcol);
var rowValues = range.getValues();
   
var cell = [
  [s,r,c]
  ];
    Logger.log(rowValues);
    Logger.log(name);
//    Logger.log(checkRow);
    Logger.log(cell);

4

1 回答 1

1

看起来您总是在活动工作表上执行操作,而不是访问“allsheets”中的工作表。

var sheet = app.getActiveSpreadsheet().getActiveSheet();

应该

var sheet = allsheets[s];

您也可能在下一行误用“getCurrentCell”,因为这将返回当前在电子表格中选择的任何单元格,无论您正在访问哪个工作表,其中始终只有一个单元格。

于 2018-07-26T19:41:05.960 回答