审核:通过谷歌表单填写,将成为主表 进行中:仅输入维修汽车并可以访问。 已完成:已完成的所有维修车。
如果汽车已经修好,进行中的表会显示“已完成”。然后应该从正在进行中移除这辆车并将其移动到已完成。我目前添加了一个帮助表,用于标识“已完成值”的单元格,在审核表单中对其进行编辑并相应地过滤该值。
但我遇到了一些问题。
Google 脚本错误:异常:此操作会将工作簿中的单元格数量增加到超过 5000000 个单元格的限制。 removecompleted @ Code.gs:35
每次更改工作表“进行中”中的 D 列时自动运行 google 脚本。
function removecompleted() {
var SHEET_NAME = "Audit";
var SHEET_NAME_2 = "In Progress";
var row_delete = SpreadsheetApp.getActiveSheet().getRange(5, 2).getValue();
var row_update = SpreadsheetApp.getActiveSheet().getRange(6, 2).getValue();
var col_delete = SpreadsheetApp.getActiveSheet().getRange(5, 3).getValue();
var col_update = SpreadsheetApp.getActiveSheet().getRange(6, 3).getValue();
if (row_delete !== 0) {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME_2).getRange(row_delete, col_delete).clear();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getRange(row_update, col_update).setValue("Completed");
}
}
答案 0 :(得分:0)
这些行:
var row_delete = SpreadsheetApp.getActiveSheet().getRange(5, 2).getValue();
var row_update = SpreadsheetApp.getActiveSheet().getRange(6, 2).getValue();
var col_delete = SpreadsheetApp.getActiveSheet().getRange(5, 3).getValue();
var col_update = SpreadsheetApp.getActiveSheet().getRange(6, 3).getValue();
最终得到这些值:
row_delete = Wed Jun 02 2021 00:00:00 GMT+0530 (India Standard Time)
row_update = Fri Jan 01 2021 00:00:00 GMT+0530 (India Standard Time)
col_delete = 1452
col_update = 1531
前两个是 Date 对象。
如果您不知道,getRange()
,如果您将它与两个参数一起使用,则取行然后取列。所以你得到:
所以当你再次使用这些值来getRange()
。你会得到一个错误。
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME_2).getRange(row_delete,col_delete).clear();
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getRange(row_update,col_update).setValue("Completed");
特别是,由于您试图给 getRange
一个 Date 对象,我相信它正在被转换为一个数字,最终会以 NaN
(不是数字),这似乎解释了作为无穷大。这就是您收到错误的原因:
This action would increase the number of cells in the workbook above the limit of 5000000 cells
我建议使用 Logger.log()
或 console.log()
来调试您的脚本,以找出变量包含您认为它们包含的值。
var row_delete = SpreadsheetApp.getActiveSheet().getRange(5, 2).getValue();
var row_update = SpreadsheetApp.getActiveSheet().getRange(6, 2).getValue();
var col_delete = SpreadsheetApp.getActiveSheet().getRange(5, 3).getValue();
var col_update = SpreadsheetApp.getActiveSheet().getRange(6, 3).getValue();
console.log(row_delete, row_update, col_delete, col_update)
您可以使用 onEdit 触发器,更多信息请点击此处:
<块引用>https://developers.google.com/apps-script/guides/triggers