我在google sheets中为我的团队创建了一个脚本,他们可以单击一个按钮打卡,另一个按钮打卡退出。
然而,我一直在尝试创建一个脚本来自动计算他们在这段时间内的工作时数,但我无法构建它。
我插入了一张画,上面写着Bianca,进进出出。我为下面的脚本的每个块分配了一个脚本。
这是不起作用的部分。
function onPunchOut (){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var lastRow = sheet.getLastRow();
var finish = sheet.getRange("E"+lastRow).getValue();
var hoursWorked = sheet.getRange("F"+lastRow);
}
if (finish === "Out") {
hoursWorked.setFormulaR1C1('=R[0]C[-2]-R[-1]C[-2]');
hoursWorked.setNumberFormat("H:mm");
}当前用于打卡的代码:
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName){
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getLastRow() + 1;
}
function setBianca() {
setValue('L1' , 'Bianca');
}
function addRecord(a, b, c){
var row = getNextRow();
setValue('A' + row, a);
setValue('D' + row, b);
setValue('E' + row, c);
}
function punchInBianca(){
addRecord(getValue('L1'), new Date(), 'In');
}
function punchOutBianca(){
addRecord(getValue('L1'), new Date(), 'Out');
}预期结果:
Name Date/Time In/Out **Hours worked**
Bianca 4/25/2019 7:59:34 In **3.15**
Bianca 4/25/2019 11:15:20 Out **0.29**
Bianca 4/25/2019 11:44:44 In **4.55**实际结果:试图获得工作小时数时出现脚本错误。说找不到变量"finish“
发布于 2019-04-27 11:26:42
您的问题是(如您所知)没有定义finish。这是因为该变量是函数onPunchOut()中的局部变量,而您的if语句不能直接访问该变量。变量有两种不同的作用域;您可以通过here了解有关它们的更多信息。要解决您的问题,请将if语句移到onPunchOut()的结束括号中。
发布于 2019-04-30 00:03:30
这招奏效了。谢谢!
function onPunchOut (){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var lastRow = sheet.getLastRow();
var finish = sheet.getRange("E"+lastRow).getValue();
var hoursWorked = sheet.getRange("F"+lastRow);
if (finish === "Out") {
hoursWorked.setFormulaR1C1('=R[0]C[-2]-R[-1]C[-2]');
hoursWorked.setNumberFormat("H:mm");
}
}https://stackoverflow.com/questions/55875949
复制相似问题