javascript 在谷歌电子表格中将数字转换为时间

mmvthczy  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(136)

我想建立一个自动化的谷歌表格电子表格,我可以输入日期,上班时间,午餐时间,下班时间,每天的总工作时间,最后汇总当月的所有工作时间。在谷歌电子表格中创建这样的工作时间表并不太困难,但我想做一些改进。一个是,即使电子表格正确计算了一天的小时数,它也会显示为时钟时间,例如晚上8:22,而不是8:22小时。另一件事是,这种格式迫使我以时间格式编写小时数,这很繁琐。我想在单元格中键入3或4位数字,让它为我转换为时间。
我了解到实现这一目标的唯一方法是使用Google Apps Script,所以我遵循了我在这方面找到的唯一教程,但代码就是不起作用。脚本工具使用JavaScript,我有点熟悉,因为我每天都在After Effects表达式中使用它,但我几乎不是Maven。我希望有人能帮助我完成这个毫无挑战性的项目(对你来说:D)。当然,如果有人有更好的替代方案,我完全愿意改变课程。非常感谢。我将粘贴我按照教程创建的代码,然后链接到教程本身。

var COLUMN_TO_CHECK = 3;
var SHEET_NAME = "Sheet1";

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  if(sheet.getName() === SHEET_NAME){
    var selectedCell = sheet.getActiveCell();

    selectedCell.setNumberFormat("@");

    if(selectedCell.getColumn() === COLUMN_TO_CHECK){
      var cellValue = selectedCell.getValue();
      var time = cellValue.substr(0,2)+":"+cellValue.substr(cellValue.lenght - 2);
      selectedCell.setValue(time);
      selectedCell.setNumberFormat("hh:mm");
     }
    }
  }

我在第7行得到一个错误:var sheet = ss.getActiveSheet();.调试器调用变量ss为null。
我注意到这个教程的一点是,它的特色代码和你一步一步写的代码不一致,而且他们也跳过了一些代码行。这可能是我的代码不工作的原因。我试图复制特色代码时,遵循教程把我带到了死胡同。
https://yagisanatode.com/2018/06/02/google-apps-script-how-to-automatically-generate-a-time-from-a-four-digit-24-hour-time-in-google-sheets/

eiee3dmh

eiee3dmh1#

我是你在这里引用的文章的作者。我没有足够的使用StackOverflow来将其添加到评论中,我相信,这将是这里的首选。
请注意,ss变量引用了活动电子表格。这是绑定到脚本的电子表格。因为我们使用onEdit()触发器,所以需要将此脚本绑定到Google Sheet。从您的问题中,我不确定您是否已经这样做了,但这里有完成此操作的说明:在Google Sheet菜单中,转到〉扩展〉应用脚本。
从这里粘贴代码并保存项目。确保您的工作表(标签中的工作表)与您希望修改的工作表相同,并相应地更新SHEET_NAME变量。
这将解决您所面临的错误。
注意-主代码下面的代码分解只是为了突出代码的一些重要部分,而不是一步一步的指导。我已经更新了这篇文章,并感谢反馈。
如果我误解了你的问题,我道歉。

  • Tanaike -请随时删除此回复或将其纳入评论而不是在这里,如果你觉得这会更合适。

相关问题