作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个代码来显示用户在谷歌部署的网络应用程序上是进还是出。
如屏幕截图所示,数据记录在 Google 表格中
我试图做的是根据谷歌工作表记录在网络应用程序上显示员工的状态是进还是出。
这是我的代码
//Status in/out
function statusIdication(){
var user = Session.getActiveUser().getEmail();
var employee = AdminDirectory.Users.get(user).name.fullName;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var lastRow = mainSheet.getLastRow();
var lastColoum = mainSheet.getLastColumn();
for (var j = 1; j <= lastRow; j++){
var mainSheet2 = ss.getSheetByName("MAIN").getRange(j,5).getValues();
var mainSheet3 = ss.getSheetByName("MAIN").getRange(j,1).getValues();
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
if (status = true){
var notification = "IN";
Logger.log(notification);
}
else{
var notifaction2 = "OUT";
}
}
}
示例 - 如果员工的最后一个条目
彼得 = 在 然后返回状态为
IN
否则
OUT
.
最佳答案
问题:
据我所知,你有以下 两个问题:
if
使用赋值运算符的条件 =
而不是相等运算符 ==
.因为您分配了值 true
至 status
,第一if
块语句每次都会执行。var mainSheet2 = ss.getSheetByName("MAIN").getRange(j,5).getValues();
var mainSheet3 = ss.getSheetByName("MAIN").getRange(j,1).getValues();
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
您正在使用 getValues
但这会返回 二维 大批。您应该使用 getValue()
相反,因为您指的是单个单元格。因此,最后一行中的比较也将起作用。ss.getSheetByName("MAIN")
三次。使用您存储它的变量是一个好习惯,否则您会进行不必要的调用。
function statusIdication(){
var user = Session.getActiveUser().getEmail();
var employee = AdminDirectory.Users.get(user).name.fullName;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var lastRow = mainSheet.getLastRow();
var lastColoum = mainSheet.getLastColumn();
for (var j = 1; j <= lastRow; j++){
var mainSheet2 = mainSheet.getRange(j,5).getValue();
var mainSheet3 = mainSheet.getRange(j,1).getValue();
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
if (status == true){
var notification = "IN";
Logger.log(notification);
}
else{
var notifaction2 = "OUT";
}
}
}
优化方案:
getRange
和
getValue
:
function statusIdication(){
var user = Session.getActiveUser().getEmail();
var employee = AdminDirectory.Users.get(user).name.fullName;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var mainSheet = ss.getSheetByName("MAIN");
var data = mainSheet.getDataRange().getValues();
for (var j = 0; j < data.length; j++){
var row = data[j];
var mainSheet2 = row[4];
var mainSheet3 = row[0];
var status = (mainSheet2 =="IN" && mainSheet3 == employee) ;
if (status == true){
var notification = "IN";
Logger.log(notification);
}
else{
var notifaction2 = "OUT";
}
}
关于javascript - 与 IN 或 OUT 状态匹配的值的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65035877/
我是一名优秀的程序员,十分优秀!