Ngày hiện tại là một biến trong Google Docs?


12

Có thể thêm (chèn) một biến cho ngày hiện tại vào Google Docs sẽ tự động cập nhật mỗi khi tôi mở tài liệu không?

Một số tiêu chí:

  • Vị trí ngày phải thay đổi, nghĩa là cho phép tôi chèn ngày một vị trí khác nhau của trang / đoạn

  • Tài liệu vẫn có thể chia sẻ được, tức là những người mở tài liệu của tôi cũng sẽ được hiển thị cùng với ngày hiện tại


Múi giờ nào nên được sử dụng để tính ngày hiện tại?
Rubén

Để có nó linh hoạt, có thể được xác định bởi chính người dùng trong cài đặt? Hoặc có thể tự động tìm nạp từ cài đặt Google Docs của người dùng không?
orschiro

1
Chỉ cần thêm nỗ lực mã hóa của tôi. Về múi giờ, tôi đã sử dụng GMT-5 nhưng nó có thể dễ dàng thay đổi thành múi giờ bạn cần. Đó không phải là một giải pháp hoàn chỉnh.
Rubén

Câu trả lời:


9

Câu trả lời ngắn

Tại thời điểm này, các biến không phải là một tính năng tích hợp của Google Docs và Google Apps Script, nền tảng để mở rộng Google Docs, không bao gồm một lớp hoặc phương thức để xử lý chúng.

Lựa chọn thay thế

Phương án 1

Một cách khác là sử dụng một mẫu văn bản nhưng bạn nên chắc chắn rằng nó sẽ chỉ khớp với ngày mà bạn muốn cập nhật.

Phương án 2

Một cách khác là sử dụng lớp NamedRange nhưng hãy nhớ rằng

  1. di chuyển phạm vi sẽ làm cho nó mất tên 1 .
  2. thay thế văn bản trong một phạm vi được đặt tên bằng nhiều yếu tố chỉ hoạt động lần đầu tiên 2 .

Mã số:

Đoạn mã sau, dự định được sử dụng trong tập lệnh được liên kết với Tài liệu Google, có hai chức năng chính:

  1. Chèn ngày hôm nay
  2. Cập nhật ngày hôm nay

Đối với mục đích gỡ lỗi đang được sử dụng

  1. ngày và giờ, thay vì chỉ ngày
  2. menu tùy chỉnh để kích hoạt các chức năng chính.

"Các vấn đề đã biết": Hàm cập nhật thay thế toàn bộ đoạn văn.

Để kiểm tra mã, sao chép mã, sau đó truy cập Google Docs của bạn, tạo tài liệu mới, nhấp vào Công cụ> Trình chỉnh sửa tập lệnh, chọn Dự án trống, dán mã, lưu dự án, gán tên, chạy đúng giờ để ủy quyền cho ứng dụng , đóng tài liệu của bạn và mở lại. Một menu mới gọi là "Tiện ích" sẽ được hiển thị. Từ đó bạn có thể gọi các chức năng chính.

function onOpen() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Utilities')
      .addItem('Insert Today\'s Date', 'insertTodayAtCursor')
      .addItem('Update Today\'s Date', 'setTodayNamedRange')
      .addToUi();
}

function todayDate(){
  return Utilities.formatDate(new Date(), "GMT-5", "yyyy-MM-dd'T'HH:mm:ss'Z'"); // "yyyy-MM-dd"
}

/**
 * Inserts the today's date at the current cursor location and create a NamedRange.
 */
function insertTodayAtCursor() {
  var str = 'testToday';
  var doc = DocumentApp.getActiveDocument();
  var cursor = doc.getCursor();

  if (cursor) {
    // Attempt to insert today's date at the cursor position. If insertion returns null,
    // then the cursor's containing element doesn't allow text insertions.
    var date = todayDate();
    var element = cursor.insertText(date);
    if (element) {
      var rangeBuilder = doc.newRange();
      rangeBuilder.addElement(element);
      return doc.addNamedRange(str, rangeBuilder.build()); 
    } else {
      DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
    }
  } else {
    DocumentApp.getUi().alert('Cannot find a cursor in the document.');
  }
}

function setTodayNamedRange(){
  var str = 'testToday';
  var doc = DocumentApp.getActiveDocument();
  // Retrieve the named range
  var namedRanges = doc.getNamedRanges();
  var newRange = doc.newRange();
  var date = todayDate();
  for(var i=0; i<namedRanges.length; i++){

    if(namedRanges[i].getName() == str){

      var rangeElement = namedRanges[i].getRange().getRangeElements();

      for (var j=0; j<rangeElement.length; j++){

        var element = rangeElement[j].getElement().asText().editAsText().setText(date);
        newRange.addElement(element);
      }
    }
  }
  doc.addNamedRange(str, newRange.build());
}


Bên dưới có một số mặt hàng thuộc loại khác nhau (câu hỏi, thông số kỹ thuật, v.v.) có thể phục vụ để lấy cảm hứng hoặc chỉ ra "hướng đi đúng" để tìm "giải pháp"


Chú thích


Điều đó có nghĩa là nó không thể?
Jacob Jan Tuinstra

@JacobJanTuinstra: IMHO, vâng, điều đó là không thể. Những gì có thể có thể là tìm một cách giải quyết nhưng đó là bối cảnh cần thiết hơn. Tôi nghĩ rằng việc yêu cầu thông tin đó nên được thực hiện trong các bình luận, nhưng tôi chưa thể bình luận ở bất cứ đâu :)
Rubén

1
@orschiro Tôi rất vui khi biết rằng nó hiệu quả với bạn. Thay vì được tái cấu trúc thành một tiện ích mở rộng của Chrome, tôi nghĩ có thể là một tiện ích bổ sung Google Docs.
Rubén

1
@ChristopherFrancisco: Mã được dự định sẽ được sử dụng trên tập lệnh giới hạn nhưng nó có thể được điều chỉnh để sử dụng từ ứng dụng của bạn nhưng đó là một câu hỏi khác mà rất có thể phù hợp hơn với Stack Overflow .
Rubén

1
@ChristopherFrancisco Tôi vừa thêm một liên kết đến hướng dẫn chính thức về giới hạn tập lệnh vào tệp chỉnh sửa Google Docs.
Rubén
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.