คำตอบสั้น ๆ
ในขณะนี้ตัวแปรไม่ใช่คุณลักษณะในตัวของ Google Docs และ Google Apps Script ซึ่งเป็นแพลตฟอร์มสำหรับขยาย Google Docs ไม่รวมคลาสหรือวิธีการจัดการ
ทางเลือก
ทางเลือก 1
ทางเลือกหนึ่งคือใช้รูปแบบข้อความ แต่คุณควรตรวจสอบให้แน่ใจว่าจะตรงกับวันที่คุณต้องการอัปเดตเท่านั้น
ทางเลือก 2
อีกทางเลือกหนึ่งคือใช้คลาส NamedRange แต่จำไว้ว่า
- ย้ายช่วงจะทำให้สูญเสียว่ามันชื่อ1
- แทนที่ข้อความในช่วงที่มีชื่อที่มีองค์ประกอบหลายทำงานเฉพาะครั้งแรก2
รหัส:
รหัสต่อไปนี้มีวัตถุประสงค์เพื่อใช้ในสคริปต์ที่ผูกไว้กับ Google เอกสารมีฟังก์ชันหลักสองประการ:
- ใส่วันที่วันนี้
- อัปเดตวันที่วันนี้
เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องกำลังถูกนำมาใช้
- วันที่และเวลาแทนวันที่เท่านั้น
- เมนูที่กำหนดเองเพื่อเรียกใช้ฟังก์ชั่นหลัก
"ปัญหาที่ทราบ": ฟังก์ชั่นอัพเดทแทนที่ทั้งย่อหน้า
ในการทดสอบรหัสให้คัดลอกจากนั้นไปที่ Google เอกสารสร้างเอกสารใหม่คลิกที่เครื่องมือ> ตัวแก้ไขสคริปต์เลือกโครงการว่างวางโค้ดบันทึกโครงการกำหนดชื่อเรียกใช้ตรงเวลาเพื่ออนุญาตแอป ปิดเอกสารของคุณและเปิดอีกครั้ง เมนูใหม่ที่ชื่อว่า "Utilities" จะปรากฏขึ้น จากตรงนั้นคุณสามารถเรียกใช้ฟังก์ชั่นหลัก
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());
}
ด้านล่างมีรายการบางอย่างที่แตกต่างกัน (คำถาม, ข้อกำหนด, ฯลฯ ) ที่สามารถรับแรงบันดาลใจหรือชี้ไปที่ "ทิศทางที่ถูกต้อง" เพื่อหา "วิธีแก้ปัญหา"
เชิงอรรถ