如何将Google Apps Script中rowOfEmployee函数输出作为saveData的变量
在Google Apps Script中获取rowOfEmployee函数的返回值给saveData使用
提前感谢您的帮助。在Google Apps Script中,我希望将rowOfEmployee函数的输出作为变量editrow供saveData函数使用。能否有人协助我实现该功能?我确信这是非常简单的操作,可能之后会懊恼自己没琢磨出来。
以下是我的两段代码:
function rowOfEmployee() { // 补全缺失的函数声明 var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); var data = datasheet.getDataRange().getValues(); var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save"); var employee = employeesheet.getRange("B1").getValue(); for(var i = 0; i<data.length;i++){ if(data[i][0] == employee){ Logger.log((i+1)) return i+1; } } } function saveData() { var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); var data = datasheet.getDataRange().getValues(); var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save"); var employee = employeesheet.getRange("B1").getValue(); var editrow = rowOfEmployee //Here I want to take the output from the previous function rowOfEmployee var col = datasheet.getLastColumn(); var target = datasheet.getRange(editrow,col +1); var saveEntry = employeesheet.getRange("B2").getValue(); saveEntry.copyTo(target, {contentsOnly:true}) }
解决方案
你只需要做两个关键修改,同时建议补充异常处理避免报错:
- 补全rowOfEmployee函数声明:原代码第一段缺失函数定义开头
function rowOfEmployee() {,必须补上才能被识别为可调用函数。 - 正确调用函数获取返回值:在saveData中,要执行函数才能拿到返回值,将
var editrow = rowOfEmployee改为var editrow = rowOfEmployee();。 - 新增异常处理:当找不到匹配员工时,避免后续代码因
editrow为undefined报错。
修改后的完整代码:
function rowOfEmployee() { var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); var data = datasheet.getDataRange().getValues(); var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save"); var employee = employeesheet.getRange("B1").getValue(); for(var i = 0; i<data.length;i++){ if(data[i][0] == employee){ Logger.log(i+1); return i+1; } } // 未找到匹配员工时返回null并打印日志 Logger.log("未找到匹配的员工"); return null; } function saveData() { var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data"); var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save"); var editrow = rowOfEmployee(); // 调用函数获取返回值 // 检查是否获取到有效行号 if(!editrow) { SpreadsheetApp.getUi().alert("未找到对应员工,无法保存数据"); return; } var col = datasheet.getLastColumn(); var target = datasheet.getRange(editrow, col + 1); var saveEntry = employeesheet.getRange("B2").getValue(); saveEntry.copyTo(target, {contentsOnly:true}); }
内容的提问来源于stack exchange,提问作者Alec Aiken
相关产品推荐
相关产品推荐

