在Google电子表格中将数字转换为时间
P粉575055974
2023-09-04 10:51:21
<p>我正在尝试构建一个自动化的Google Sheets电子表格,我可以在其中输入日期、上班时间、午餐时间、下班时间、每天工作小时数,最后总结出一个月的工作小时数。在Google电子表格中创建一个工作时间表并不太难,但有一些改进我想要做。一是即使电子表格正确计算了当天的工作小时数,它也将总数显示为时钟时间,例如下午8:22,而不是8小时22分钟。另一件事是这种格式迫使我以时间格式书写小时,这很繁琐。我希望能够在单元格中输入3或4个数字,并将其转换为时间。</p>
<p>我了解到实现这一点的唯一方法是使用Google Apps Script,所以我按照我找到的唯一教程进行了操作,但代码根本不起作用。脚本工具使用的是JavaScript,我对它有一些了解,因为我每天在After Effects表达式中使用它,但我并不是专家。如果有人能帮助我解决这个不太具有挑战性的项目,我会非常感激。当然,如果有人对我所做的任何事情有更好的替代方案,我完全可以改变方向。非常感谢。我将粘贴我根据教程创建的代码,然后是教程本身的链接。</p>
<pre class="brush:php;toolbar:false;">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");
}
}
}</pre>
<p>我在第7行遇到了一个错误:var sheet = ss.getActiveSheet();。调试器将变量<strong>ss</strong>称为null。</p>
<p>我注意到教程中的一个问题是,它在特色代码和逐步编写的代码之间存在不一致,并且它们还跳过了一些代码行。这可能是我的代码不起作用的原因。当我按照教程进行操作时,它将我带入了死胡同,我试图完全复制特色代码。</p>
<p>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/</p>
我是您在这里引用的文章的作者。我不经常使用StackOverflow,所以无法在评论中添加这个,我相信这里的首选是这样做。
请注意,
ss
变量引用的是活动电子表格。这是与脚本绑定的电子表格。因为我们使用了onEdit()
触发器,所以这个脚本需要绑定到Google表格。根据您的问题,我不确定您是否已经这样做了,但是以下是完成此操作的说明: 在您的Google表格菜单中,转到>扩展>Apps Script。在这里,粘贴代码并保存项目。确保您的工作表名称(选项卡中的名称)与您希望修改和更新的工作表名称相同,并相应地更新
SHEET_NAME
变量。这应该解决您遇到的错误。
注意-主要代码下面的代码分解仅用于突出显示代码的一些重要部分,而不是一步一步的指南。我已经根据这个考虑更新了帖子,并感谢您的反馈。
如果我对您的问题有误解,我向您道歉。
Tanaike-如果您认为这样更合适,请随时删除此回复或将其合并到评论中,而不是放在这里。