在谷歌文档中插入日期时间
Posted
技术标签:
【中文标题】在谷歌文档中插入日期时间【英文标题】:Insert date time in google document 【发布时间】:2012-11-15 03:14:55 【问题描述】:我想在 Google 文档中插入时间戳(日期和/或时间)。支持文档()说应该有键盘快捷键,但是在我的环境(Win7 + IE9)下不行。
谁能为我提供一个 Google Apps 脚本来实现这一点?
【问题讨论】:
Apps 脚本无法向 Google 文档添加快捷方式或菜单。那需要什么?我的意思是,这个的整个用法。您要批量将时间戳附加到一堆文档吗?或者还有什么? 您缺少指向文档的链接。您可能正在查看用于表格的support.google.com/drive/bin/answer.py?hl=en&answer=181110,而您的意思是查看文档帮助项support.google.com/drive/bin/…,它没有列出这样的快捷方式。 关于 WebApps 的几乎相同的问题,在此问题之前 2 年提出:webapps.stackexchange.com/questions/6440/… 【参考方案1】:这很好用
在 Google 文档中:工具 -> 打开脚本编辑器并保存此脚本
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;
重新加载文档,接受权限。
【讨论】:
对于那些想在电子表格中使用它的人来说是一个快速的特别之处gist.github.com/mlatu/11498254 有没有一种简单的方法可以为这个自定义菜单创建快捷方式?感谢您的回答。 @KumarDeepak:我还没有尝试过,但我想你可以更新 onOpen 以添加一个处理程序来检查你的热键的所有键是否被按下。 你一定是在开玩笑吧……如果这是“解决方案”,谷歌还有很长的路要走…… 这仅适用于我添加脚本的单个文档,但不适用于任何其他文档!这意味着我在单个文档上获得了“实用程序”选项。我不认为这是它应该的工作方式!【参考方案2】:我不确定插件是否属于您要求的 Google Apps 脚本类别,错误 Text Factory 提供了插入时间戳的功能。
【讨论】:
文本工厂插件在 Google Apps 中需要过多的权限。我不会在我的 Google Apps 帐户上允许这样做。 链接失效【参考方案3】:这是一个经过编辑的版本(已经提供的版本),它打印出包括时间在内的日期戳。
以下是输出示例: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;
【讨论】:
【参考方案4】:如果你想打开文档后自动获取当前日期,你可以添加这个脚本:
在 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);
在文档正文中,您必须包含“已生成”文本。
【讨论】:
【参考方案5】:创建一个新的表格文档
在A1中输入Date:
,在B1中输入公式NOW()
。我将工作表命名为current-date
,但您可以随意命名。该文档将作为您所有 Docs 文档的“日期管理员”简单地放在您的驱动器到服务器上。
将单元格格式化为日期
选择单元格 B1 并从 Format
菜单中选择 Number >> Date
。
选择单元格并复制
选择单元格A1和B1,右击,选择Copy
粘贴并链接到 Docs 文档
在您要粘贴单元格的文档文档中右键单击,然后单击Paste
。文档应该询问您是否要将这些单元格链接到源文档。选择Link to spreadsheet
,然后点击Paste
。
摆脱边界
要去除边框,请右键单击插入的单元格并选择Table Properties
。
现在将Table Border
设置为0pt
并点击OK
。
最终结果
你应该得到这样的结果。您可以拖动单元格的边缘以使其变大或变小,还可以更改单元格的字体和文本大小。如果将文本变大,文本将在单元格内换行,因此您需要将它们变宽。
更新日期
现在,每当您打开带有链接单元格的文档并且日期已更改时,您应该会看到这一点。单击Update
,您的日期将更新为今天的日期。无需打开current-date
电子表格!
享受吧!
【讨论】:
【参考方案6】:对于 Docs,您可能不走运,因为似乎有 no hotkey for that,并且缺乏对从 Docs 内部编写脚本的支持(电子表格将是另一回事)。不过,由于您使用的是 Windows,因此您可以使用 autohotkey。 This video,虽然太长了,但显示分配全局热键组合以在任何地方插入当前日期。这样,您可以在使用 Windows 系统时将日期/时间插入到任何您想要的位置。 (你可以自定义它只在某些应用程序中激活,例如 IE,如果你想对它变得古怪)
【讨论】:
正是我想要的,自动热键是要走的路。一定会喜欢的。感谢布赖恩的评论!【参考方案7】:因为使用额外的按键从菜单中插入日期,所以我的解决方案是一个批处理文件 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 提出一个可嵌入的函数,每次打开文档时都会将显示日期更新为当前日期。
【讨论】:
【参考方案8】:在 MacOS 上,我使用了 Automator。
我创建了一个与 Chrome 一起使用的服务,不接受任何输入,并运行一个 shell 脚本并将输出发送到剪贴板。 shell 脚本非常基础:
DateTime=`date "+%Y-%m-%d %H:%M"`
echo $DateTime
我本可以不使用中间变量而只运行 date 命令,但我想我可能想要进行额外的处理和格式化。请注意,如果要在日期字符串的格式中包含空格,则格式参数必须用引号引起来。屏幕截图使用了一个下划线。
保存脚本后,我转到系统设置 > 键盘 > 快捷方式,在文本部分找到我的脚本 DateTime2CB.workflow 并给它一个热键。要找出正在使用的热键并不容易。
我本可以为任何应用程序使用它(如果我发现自己尝试使用其他应用程序,我仍然可能会这样做),但现在它只是 Chrome。我也可以让 shell 脚本将日期的输出通过管道传输到剪贴板,Mac 上的 pbcopy,如上所述(使用“clip”)。我已经测试了这两种方法,它们都有效。
我将相同的脚本添加到另一台 Mac 并设置为坚持将 Automator 文件 (name.workflow) 保存在 iCloud 中。在这种情况下,它没有在键盘设置中列出。为了解决这个问题,我必须在 Automator 中使用打开 > 最近重新打开保存的 iCloud 文件。它询问我是否想在服务中安装该文件。那时的肯定答案将其保存在我的本地系统上,我可以在“设置”>“键盘”>“快捷方式”>“服务”下找到它。
我希望这对其他 Mac 用户有所帮助。
八月
【讨论】:
【参考方案9】:试试这个:
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")
这适用于不确定您是否正在寻找其他文档的电子表格。
【讨论】:
不适用于 Docs(正如 OP 所要求的那样),因此投反对票。【参考方案10】:今天在 Google 文档中创建电子表格。将日期放入 B1 作为 Today() 使用函数 Text(B1,"dddd, mmmm d, yyyy") 在 C1 中格式化 然后使用以下脚本(您将需要 Today 电子表格的 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);
【讨论】:
在Doc中哪里可以应用这个函数? 不适用于 Docs(正如 OP 所要求的那样),因此投反对票。以上是关于在谷歌文档中插入日期时间的主要内容,如果未能解决你的问题,请参考以下文章