Подтвердить что ты не робот

Вставить дату в документ Google

Я хотел бы вставить временную метку (дату и/или время) в Документы Google. Документация поддержки() говорит, что должен быть ярлык для клавиатуры, но он не работает в моей среде (Win7 + IE9).

Может ли кто-нибудь предоставить мне Google Apps script для этого?

4b9b3361

Ответ 1

Это хорошо работает

В Google Docs: Инструменты → Откройте Script Редактор и сохраните этот 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 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;
}

Перезагрузите документ, примите разрешения.

Ответ 2

Я не уверен, что надстройка относится к категории Google Apps Script, о которой вы просили, об ошибке Text Factory предоставляет возможность вставить отметку времени.

Снимок экрана

Ответ 3

Вот отредактированная версия (уже предоставленная), которая печатает штамп даты, включая время.

Вот пример выхода: 2:43:21 AM EST 26-03-2014

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 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

Для Документов вам, вероятно, не повезло, поскольку, как представляется, нет горячей клавиши для этого, а поддержка сценариев из Docs (Таблицы были бы другой историей). Так как вы работаете в Windows, вы можете воспользоваться autohotkey. Это видео, пока слишком длинное, показывает назначение глобальной комбинации горячих клавиш для вставки текущей даты в любом месте. При этом вы можете вставлять дату и время в любом месте, где хотите, используя вашу систему Windows. (Вы можете настроить его, чтобы он был активным только в определенных приложениях, таких как IE, если вы хотите, чтобы их было неловко)

Ответ 5

Поскольку дополнительные вставки клавиш используются для вставки даты из меню, мое решение представляет собой пакетный файл 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 не появится вложенная функция, которая будет обновлять дату отображения до текущей даты каждый раз, когда открывается документ.

Ответ 6

В MacOS я использовал Automator.

Я создал службу, которая работает с Chrome, не принимает никаких данных и запускает оболочку script и отправляет вывод в буфер обмена. Оболочка script очень проста:

DateTime=`date "+%Y-%m-%d %H:%M"`
echo $DateTime

Я мог бы обойтись без промежуточной переменной и просто запустить команду date, но у меня возникла идея, что я могу сделать дополнительную обработку и форматирование. Обратите внимание: если вы хотите включить пробелы в форматирование строки даты, аргумент форматирования должен быть в кавычках. Вместо этого снимок экрана использует нижний план.

введите описание изображения здесь При сохранении script я перешел в раздел "Системные настройки" > "Клавиатура" > "Ярлыки", я нашел свой script DateTime2CB.workflow в разделе "Текст" и дал ему горячую клавишу. Нет простого способа узнать, какие горячие клавиши используются.

Я мог бы сделать это для любого приложения (и если я попытаюсь использовать его в других приложениях, я все равно могу это сделать), но пока это только Chrome. Я мог бы также иметь оболочку script передать вывод даты в буфер обмена pbcopy на Mac, как указано выше (с помощью "clip" ). Я тестировал оба метода, и они работают.

Я добавил тот же самый script к другому Mac, и он был настроен на то, чтобы сохранить файл Automator (name.workflow) в iCloud. в этом контексте он не был указан в настройках клавиатуры. Чтобы исправить это, мне пришлось повторно открыть сохраненный файл iCloud в Automator, используя Open > Recent. Он спросил, хочу ли я установить файл в Services. Ответ да в тот момент сохранил его в моей локальной системе, и я мог найти его в разделе "Настройки" > "Клавиатура" > "Шорки" > "Службы".

Я надеюсь, что это поможет другим пользователям Mac.

Август

Ответ 7

Если вы хотите автоматически получить текущую дату после открытия документа, вы можете добавить этот скрипт:

В Документах 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);    
}

Ответ 8

Я использовал Google листы, чтобы ускорить этот процесс.

  1. Создать документ Google Slides
  2. Создать документ листов Google
  3. Создайте ячейку, которая =now()
  4. Установить форматирование даты
  5. Скопируйте две ячейки с этого листа, одна из которых является датой на главном слайде
  6. При вставке в слайды выберите "ссылка на этот лист"
  7. Каждый раз, когда вы хотите обновить все слайды, переходите на страницу Google и меняйте дату.
  8. В слайдах Google нажмите "Обновить" на вставленной таблице.
  9. Дата будет обновляться везде, чтобы соответствовать дате листа Google.

Ответ 9

Создать новый документ Sheets

В A1 положите Date: и B1, вставьте формулу NOW(). Я назвал лист current-date, но вы можете назвать его как хотите. Этот документ будет просто храниться на вашем диске в качестве "хранителя даты" для всех ваших документов Docs.

New Sheet NOW()

Форматировать ячейку как дату

Выберите ячейку B1 и выберите Number >> Date в меню Format.

Format Date

Выберите ячейки и скопируйте

Выберите ячейки A1 и B1, щелкните правой кнопкой мыши и выберите Copy

Select and Copy

Вставка и ссылка на документ документа

Щелкните правой кнопкой мыши в документе Docs, куда вы хотите вставить ячейки, и нажмите Paste. Документы должны спросить вас, хотите ли вы связать эти ячейки с исходным документом. Выберите Link to spreadsheet, а затем нажмите Paste.

Paste and Link

Избавиться от границ

Чтобы избавиться от границ, щелкните правой кнопкой мыши на вставленных ячейках и выберите Table Properties.

Table Properties

Теперь установите Table Border на 0pt и нажмите OK.

Border Zero

Окончательный результат

Вы должны в конечном итоге что-то вроде этого. Вы можете перетащить края ячеек, чтобы сделать их больше или меньше, а также изменить шрифт и размер текста ячеек. Если вы сделаете текст больше, текст будет заключен в ячейки, поэтому вам нужно будет сделать их шире.

Final Result

Обновление даты

Теперь, когда вы открываете документ со связанными ячейками и дата меняется, вы должны увидеть это. Нажмите Update, и ваша дата будет обновлена до сегодняшней даты. Нет необходимости открывать электронную таблицу current-date!

Update Cells

Наслаждайтесь!

Ответ 10

Попробуйте следующее:

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") 
}

Это работает на электронных таблицах, не уверен, что вы искали другие документы.

Ответ 11

Создайте таблицу Сегодня в документах google. Поместите дату в B1 как Today() Отформатируйте ее в C1, используя функцию Text (B1, "dddd, mmmm d, yyyy" ) Затем используйте следующий script (вам понадобится URL-адрес таблицы Today

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