在 gsheet 中的特定列和行上添加时间戳并冻结列
Posted
技术标签:
【中文标题】在 gsheet 中的特定列和行上添加时间戳并冻结列【英文标题】:Adding a time stamp on a specific column and row in gsheet with colimn freeze 【发布时间】:2021-02-01 13:57:09 【问题描述】:我正在尝试使用 gsheet 创建一个跟踪器,以提高我们的日常工作效率。我正在使用 A 到 J 列并将其冻结到 J。从 K 到 Z 这些是我想用来为我们的时间戳制作按钮的列和行,例如休息、午餐、培训等。我创建了一个按钮开始和结束并带有数据验证的下拉菜单,他们可以在其中选择休息、午餐培训等当前活动,因为我使用从 A 到 J 的列和行进行日常生产。每当我点击开始按钮做一个时间戳让我们说休息时,它将时间戳到整个工作表中使用的最后一行。我不想从整个工作表的最后一行记录时间戳,我想将时间戳记录到特定列和从 K 到 Z 列的行。有人可以帮我编写脚本吗?
【问题讨论】:
【参考方案1】:如果您想使用您的代码(无需用户输入)在特定行和列上放置时间戳,您可以使用 Sheet.getRange(row, column) 为特定行和列索引选择单元格范围。
如果您想通过用户输入在特定单元格上设置时间戳,以下选项将要求用户指定应添加时间戳的单元格。
选项 1:使用 Prompt Dialogs 获取要输入时间戳的单元格的 a1Notation
。
示例代码:
function insertTimeStamp_dialog()
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");
//Get specific cell using prompt dialog
var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
'Insert Timestamp',
'Please enter the cell(a1Notation) where you want to add the timestamp:',
ui.ButtonSet.OK_CANCEL);
// Process the user's response.
var button = result.getSelectedButton();
var text = result.getResponseText();
if (button == ui.Button.OK)
// User clicked "OK".
Logger.log(text);
try
var cell = sheet.getRange(text);
var date = new Date();
cell.setValue(date.toDateString());
catch(e)
ui.alert('Invalid input range');
else if (button == ui.Button.CANCEL)
// User clicked "Cancel".
ui.alert('Request canceled');
else if (button == ui.Button.CLOSE)
// User clicked X in the title bar.
ui.alert('You closed the dialog.');
样本输出:
它有什么作用?
-
它会创建一个对话框提示,询问用户应该在 a1Notation 中的特定单元格
使用Sheet.getRange(a1Notation)获取指定单元格的范围
使用Range.setValue()设置范围值
选项 2:使用 Range.getValue() 从工作表中的特定单元格获取要输入时间戳的单元格的 a1Notation
;
示例代码:
function insertTimeStamp_cell()
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet3");
var ui = SpreadsheetApp.getUi();
var targetCell = sheet.getRange("A5").getValue();
try
var cell = sheet.getRange(targetCell);
var date = new Date();
cell.setValue(date.toDateString());
catch(e)
ui.alert('Invalid input range');
样本输出:
它有什么作用?
-
使用Range.getValue() 从指定单元格(硬编码/固定单元格)获取 a1Notation。在此示例中,我指定应从单元格“A5”读取输入
使用Sheet.getRange(a1Notation)获取指定单元格的范围
使用Range.setValue()设置范围的值
您可能还想在成功添加时间戳后清除单元格“A5”中的值,这样它就不会被无意覆盖。你可以使用Range.clear()
【讨论】:
嗨,Ron,非常感谢您为我的查询付出的时间和精力。这是我要创建的输出。 很高兴听到这个消息。如果您认为这很有用,您可以接受/赞成答案作为对其他用户的参考。谢谢以上是关于在 gsheet 中的特定列和行上添加时间戳并冻结列的主要内容,如果未能解决你的问题,请参考以下文章