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

问题描述 投票:0回答:1

我正在尝试构建一个自动化的 Google 表格电子表格,我可以在其中输入日期、上班时间、午餐时间、下班时间、每天的总工作时间,最后汇总当月的所有工作时间。在 Google 电子表格中创建像这样的工作时间表并不太难,但我想做一些改进。一个是即使电子表格正确计算了当天的小时数,它也将总计显示为时钟时间,例如晚上 8:22,而不是 8:22。另一件事是这种格式迫使我用乏味的时间格式写小时数。我想在单元格中输入 3 或 4 位数字,然后让它为我将其转换为时间。

我了解到实现此目的的唯一方法是使用 Google Apps 脚本,因此我遵循了我在这方面找到的唯一教程,但代码无法正常工作。脚本实用程序使用我有点熟悉的 javascript,因为我每天都在 After Effects 表达式中使用它,但我算不上专家。如果有人可以帮助我完成这个没有挑战性的(对你来说: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 为空。

我注意到本教程的一件事是特色代码与您逐步编写的代码不一致,并且它们也跳过了一些代码行。这可能是我的代码不起作用的原因。在按照教程将我送入死胡同时,我试图抄送特色代码。

https://yagisanatode.com/2018/06/02/google-apps-script-how-to-automatically-generate-a-time-from-a-four-digit-24-hour-time-in-谷歌表格/

javascript google-apps-script google-sheets
1个回答
0
投票

我是您在此处引用的文章的作者。我对 StackOverflow 的使用还不够多,无法将其添加到评论中,我确信这将是这里的首选。

请注意,

ss
变量引用活动电子表格。这是 绑定到脚本 的电子表格。因为我们正在使用
onEdit()
触发器
这个脚本需要绑定到 Google 表格。从你的问题来看,我不确定你是否这样做过,但这里是完成此操作的说明: 在您的 Google 表格菜单中转到 > 扩展 > Apps 脚本。

从这里粘贴代码并保存项目。确保您命名的工作表(选项卡中的那个)与您希望修改的工作表相同,并相应地更新

SHEET_NAME
变量。

这应该可以解决您面临的错误。

注意 - 主要代码下方的代码分解只是为了突出代码的一些重要部分,而不是一步一步的指导。考虑到这一点,我更新了帖子并感谢反馈。

如果我误解了你的问题,我很抱歉。

Tanaike - 如果您觉得这样更合适,请随时删除此回复或将其合并到评论中而不是在这里。

© www.soinside.com 2019 - 2024. All rights reserved.