我想在 Google 文档中插入时间戳(日期和/或时间)。支持文档()说应该有键盘快捷键,但在我的环境(Win7 + IE9)下不起作用。
谁能为我提供一个 Google Apps 脚本来实现这一目标?
我想在 Google 文档中插入时间戳(日期和/或时间)。支持文档()说应该有键盘快捷键,但在我的环境(Win7 + IE9)下不起作用。
谁能为我提供一个 Google Apps 脚本来实现这一目标?
This works well
In Google Docs : Tools -> Open Script Editor and save this script
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu('Custom Menu')
.addItem('Insert Date', 'insertDate')
.addToUi();
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var date = dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
Reload the Doc, Accept the permissions.
我不确定附加组件是否属于您要求的 Google Apps 脚本类别,错误文本工厂提供插入时间戳的功能。
这是一个编辑版本(已经提供的版本),它打印出包括时间在内的日期戳。
这是输出示例:2014 年 3 月 26 日上午 2:43:21
function onOpen() {
var ui = DocumentApp.getUi();
// Or FormApp or SpreadsheetApp.
ui.createMenu('Insert Date')
.addItem('Insert Date', 'insertDate')
.addToUi();
}
function insertTime() {
var d = new Date();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
// OR:
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
}
function insertDate() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
var d = new Date();
var dd = d.getDate();
dd = pad(dd, 2)
var mm = d.getMonth() + 1; //Months are zero based
mm = pad(mm, 2)
var yyyy = d.getFullYear();
var timeStamp = d.getTime(); // Number of ms since Jan 1, 1970
var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
var date = currentTime + " " + dd + "-" + mm + "-" + yyyy;
var element = cursor.insertText(date);
if (element) {
element.setBold(true);
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
function pad (str, max) {
str = str.toString();
return str.length < max ? pad("0" + str, max) : str;
}
如果要在打开文档后自动获取当前日期,可以添加此脚本:
在 Google 文档中:工具 -> 打开脚本编辑器并保存此脚本:
/**
* After open document actualize part with text "Generated" to "Generated [actual date]".
*/
function onOpen() {
var body = DocumentApp.getActiveDocument().getBody();
var date = Utilities.formatDate(new Date(), "GMT", "dd.MM.yyyy");
// Clear the text surrounding "Apps Script", with or without text.
body.replaceText("^Generated.*$", "Generated " + date);
}
在文档正文中,您必须有文本“已生成”。
在 A1 中,放入Date:
和 B1,放入公式NOW()
。我命名了工作表current-date
,但您可以随意命名。该文档将作为您所有 Docs 文档的“日期管理员”简单地放在您的驱动器到服务器上。
选择单元格 B1 并Number >> Date
从Format
菜单中选择。
选择单元格 A1 和 B1,右键单击,然后选择Copy
右键单击要粘贴单元格的 Docs 文档,然后单击Paste
。文档应该询问您是否要将这些单元格链接到源文档。选择Link to spreadsheet
然后单击Paste
。
要摆脱边框,请右键单击插入的单元格并选择Table Properties
。
现在设置Table Border
为0pt
并单击OK
。
你应该最终得到这样的东西。您可以拖动单元格的边缘以使其变大或变小,还可以更改单元格的字体和文本大小。如果使文本变大,则文本将在单元格内换行,因此您需要使它们变宽。
现在,每当您打开带有链接单元格的文档并且日期已更改时,您应该会看到这一点。单击Update
,您的日期将更新为今天的日期。无需打开current-date
电子表格!
享受!
对于 Docs,您可能不走运,因为似乎没有热键,并且缺乏对 Docs 内部脚本的支持(电子表格将是另一回事)。不过,由于您使用的是 Windows,因此您可以使用autohotkey。 该视频虽然太长,但显示了分配全局热键组合以在任何地方插入当前日期。这样,您可以在使用 Windows 系统时将日期/时间插入到任何您想要的位置。(您可以将其自定义为仅在某些应用程序(例如 IE)中处于活动状态,如果您想对它感到奇怪的话)
因为额外的击键被用来从菜单中插入日期,所以我的解决方案是一个批处理文件 sts.cmd,它在调用时将日期时间存储到剪贴板中,从而启用简单的 Windows+R、sts、 Ctrl+V 获取并粘贴。如果您要添加额外的击键以将日期添加到文档中,您不妨将其粘贴进去。代码是
@ECHO OFF
for /f "tokens=1-12 delims=/:. " %%d in ("%time%") do SET MYTIME= %%d:%%e:%%f
for /f "tokens=1-12 delims=/:. " %%d in ("%date%") do SET MYDATE= %%g-%%e-%%f
SET MYTS=%MYDATE%%MYTIME%
ECHO | SET /p dummyname=%MYTS%|clip
这对我有用,直到 GDocs 提出一个可嵌入的函数,每次打开文档时都会将显示日期更新为当前日期。
在 MacOS 上,我使用了 Automator。
我创建了一个与 Chrome 一起工作的服务,不需要输入,运行一个 shell 脚本并将输出发送到剪贴板。shell 脚本非常基础:
DateTime=`date "+%Y-%m-%d %H:%M"`
echo $DateTime
我本可以不使用中间变量而只运行 date 命令,但我想我可能想要进行额外的处理和格式化。请注意,如果要在日期字符串的格式中包含空格,则格式参数必须用引号引起来。屏幕截图使用了一个下划线。
保存脚本后,我转到系统设置 > 键盘 > 快捷方式,在文本部分找到我的脚本 DateTime2CB.workflow 并给它一个热键。要找出正在使用的热键并不容易。
我可以为任何应用程序制作它(如果我发现自己试图使用其他应用程序,我仍然可能会这样做),但现在它只是 Chrome。我也可以让 shell 脚本将日期的输出通过管道传输到剪贴板,Mac 上的 pbcopy,如上所述(使用“clip”)。我已经测试了这两种方法并且它们都有效。
我将相同的脚本添加到另一台 Mac 并设置为坚持将 Automator 文件(名称.workflow)保存在 iCloud 中。在这种情况下,它没有在键盘设置中列出。为了解决这个问题,我必须在 Automator 中使用打开 > 最近重新打开保存的 iCloud 文件。它询问我是否想在服务中安装该文件。那时的肯定答案将其保存在我的本地系统上,我可以在“设置”>“键盘”>“快捷方式”>“服务”下找到它。
我希望这可以帮助其他 Mac 用户。
八月
Try this:
function insertTimestamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getActiveCell();
cell.setValue(new Date());
// sets the cells format to month/day/year.
// Remove if you want time inserted as well
cell.setNumberFormat("MM/dd/yyyy")
}
This works on spreadsheets not sure if you were looking for other docs.
立即在 google 文档中创建电子表格。将日期放入 B1 为 Today() 使用函数 Text(B1,"dddd, mmmm d, yyyy") 将其格式化为 C1 然后使用以下脚本(您将需要 Today Spreadsheet 的 url
function myFunction() {
var doc = DocumentApp.getActiveDocument();
var body1 = doc.getBody();
var style1 = {};
style1[DocumentApp.Attribute.BOLD] = true;
var text1 = doc.editAsText();
body1.appendHorizontalRule();
var wb = SpreadsheetApp.openByUrl('spreadsheet url');
var ss = wb.getSheetByName('Today');
var r = ss.getRange('C1');
var date1 = r.getValues();
var par1 =body1.appendParagraph(date1[0]);
par1.setAttributes(style1);
}