40

我想在 Google 文档中插入时间戳(日期和/或时间)。支持文档()说应该有键盘快捷键,但在我的环境(Win7 + IE9)下不起作用。

谁能为我提供一个 Google Apps 脚本来实现这一目标?

4

10 回答 10

43

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.

于 2014-02-10T14:15:37.610 回答
9

我不确定附加组件是否属于您要求的 Google Apps 脚本类别,错误文本工厂提供插入时间戳的功能。

截屏

于 2016-11-08T17:57:26.407 回答
7

这是一个编辑版本(已经提供的版本),它打印出包括时间在内的日期戳。

这是输出示例: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;
}
于 2014-03-25T15:44:23.250 回答
5

如果要在打开文档后自动获取当前日期,可以添加此脚本:

在 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);    
}

在文档正文中,您必须有文本“已生成”。

于 2018-11-20T08:10:17.453 回答
5

创建新的表格文档

在 A1 中,放入Date:和 B1,放入公式NOW()。我命名了工作表current-date,但您可以随意命名。该文档将作为您所有 Docs 文档的“日期管理员”简单地放在您的驱动器到服务器上。

新工作表 NOW()

将单元格格式设置为日期

选择单元格 B1 并Number >> DateFormat菜单中选择。

格式化日期

选择单元格并复制

选择单元格 A1 和 B1,右键单击,然后选择Copy

选择和复制

粘贴并链接到 Docs 文档

右键单击要粘贴单元格的 Docs 文档,然后单击Paste。文档应该询问您是否要将这些单元格链接到源文档。选择Link to spreadsheet然后单击Paste

粘贴和链接

摆脱边界

要摆脱边框,请右键单击插入的单元格并选择Table Properties

表属性

现在设置Table Border0pt并单击OK

零边界

最后结果

你应该最终得到这样的东西。您可以拖动单元格的边缘以使其变大或变小,还可以更改单元格的字体和文本大小。如果使文本变大,则文本将在单元格内换行,因此您需要使它们变宽。

最后结果

更新日期

现在,每当您打开带有链接单元格的文档并且日期已更改时,您应该会看到这一点。单击Update,您的日期将更新为今天的日期。无需打开current-date电子表格!

更新单元格

享受!

于 2019-10-16T18:00:04.280 回答
3

对于 Docs,您可能不走运,因为似乎没有热键,并且缺乏对 Docs 内部脚本的支持(电子表格将是另一回事)。不过,由于您使用的是 Windows,因此您可以使用autohotkey该视频虽然太长,但显示了分配全局热键组合以在任何地方插入当前日期。这样,您可以在使用 Windows 系统时将日期/时间插入到任何您想要的位置。(您可以将其自定义为仅在某些应用程序(例如 IE)中处于活动状态,如果您想对它感到奇怪的话)

于 2012-11-27T15:11:38.023 回答
3

因为额外的击键被用来从菜单中插入日期,所以我的解决方案是一个批处理文件 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 提出一个可嵌入的函数,每次打开文档时都会将显示日期更新为当前日期。

于 2014-09-14T19:35:25.347 回答
2

在 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 用户。

八月

于 2016-07-08T01:29:12.623 回答
-4

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.

于 2013-04-30T05:24:44.457 回答
-4

立即在 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);
}
于 2014-01-06T21:53:43.490 回答