짧은 대답
현재 변수는 Google 문서 및 Google 문서를 확장하는 플랫폼 인 Google Apps 스크립트의 기본 제공 기능이 아니며 변수를 처리하는 클래스 또는 메소드를 포함하지 않습니다.
대안
대안 1
한 가지 대안은 텍스트 패턴을 사용하는 것이지만 업데이트하려는 날짜 만 일치하는지 확인해야합니다.
대안 2
또 다른 대안은 NamedRange 클래스를 사용하는 것이지만
- 범위를 이동하면 이름이 없어 집니다 1 .
- 명명 된 범위의 텍스트를 여러 요소로 바꾸는 것은 처음에만 작동합니다 2 .
암호:
Google 문서에 바인딩 된 스크립트에 사용되는 다음 코드 에는 두 가지 주요 기능이 있습니다.
- 오늘 날짜 삽입
- 오늘 날짜 업데이트
디버깅 목적으로 사용 중
- 날짜가 아닌 날짜와 시간입니다.
- 사용자 정의 메뉴는 주요 기능을 트리거합니다.
"알려진 문제": 업데이트 기능이 전체 단락을 대체합니다.
코드를 테스트하려면 복사 한 다음 Google 문서로 이동하여 새 문서를 작성하고 도구> 스크립트 편집기를 클릭 한 후 빈 프로젝트를 선택하고 코드를 붙여넣고 코드를 붙여넣고 프로젝트를 저장 한 후 이름을 지정하고 앱을 승인하기 위해 정시에 실행하십시오. , 문서를 닫고 다시 엽니 다. "유틸리티"라는 새로운 메뉴가 표시됩니다. 거기에서 주요 기능을 호출 할 수 있습니다.
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());
}
아래에는 "솔루션"을 찾기 위해 영감을 얻거나 "올바른 방향"을 가리킬 수있는 다양한 종류 (질문, 사양 등)가 있습니다.
각주