值何时写入 Google 表格单元格?



我遇到了一个奇怪的问题。 当我在Google表格单元格中输入文本,然后运行自定义脚本(如下(来获取这些值时,它不会获取我刚刚输入的值。 这些值仅在我离开该单元格(tabenter(后才可用。

var data = dataRange.getValues();

我不确定值何时实际写入单元格。 如果我编写离开该单元格(下图(的脚本,则会遇到同样的问题。

var newRange = sheet.getRange("C4"); sheet.setCurrentCell(newRange);

有没有办法将所有数据写入工作表?

可以使用此代码进行测试。 将一些文本写入 A1,运行自定义脚本并检查日志。 如果在运行脚本之前未离开 A1,则日志将为空。

function moveTest(){
var sheet = SpreadsheetApp.getActiveSheet();
var newRange = sheet.getRange("A2");
sheet.setCurrentCell(newRange);
var cellOfInterest = sheet.getRange("A1").getValue();
Logger.log(cellOfInterest);
}

编辑:setActiveSelection而不是setCurrentCell的相同问题

值何时写入 Google 表格单元格?

当您按 Tab、箭头键、Enter 或任何其他将焦点从单元格移开的方法时,值将被写入或提交。

我不确定它是否适合您,但是如果您正在检查 1 个确切的单元格,则在运行脚本之前检查输入是否识别的 if 语句

就可以了:

function checkwritten(){
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var ui = SpreadsheetApp.getUi(); 
var InterestCell = sheet.getRange("A1");
var cellOfInterest = sheet.getRange("A1").getValue();
if (InterestCell.isBlank()) {
Logger.log("missing value");
ui.alert('There are missing values');
}
else {
Logger.log(cellOfInterest);
/*
enter code here
*/
}
}

提出的其他解决方案,例如使按钮成为菜单选项,或使按钮变灰,直到所有条目都填满也是可行的。

如果要检查范围,则以下两个选项是可行的:

选项1:在工作表中创建一个带有计数空白的单元格,它将是感兴趣的单元格。

function checkwritten(){
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var InterestCell = sheet.getRange("A6");
var cellOfInterest = sheet.getRange("A6").getValue();
if (cellOfInterest == 0) {
Logger.log("success");
}
else {
Logger.log(cellOfInterest);
/*
enter code here
*/
}
}

选项 2 - 允许脚本确保在运行之前没有空白单元格。

function checkwritten(){
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var CellCheckCount = 100; // 1 above the total number of rows to check
var ui = SpreadsheetApp.getUi();
var BlankCellCount = 0;
var CheckCell = null;
for (var i = 1; i < CellCheckCount; i++){
CheckCell = sheet.getRange(i,1); //currently set to check column 1 up till 100-1 row
if (CheckCell.isBlank()){
BlankCellCount++;
}
else{
}
}
if (BlankCellCount == 0) {
Logger.log("success");
/*
enter code here
*/
}
else {
Logger.log("fail" + BlankCellCount);
}
}

最新更新