在Google电子表格中将数字转换为时间
<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>