홈>
아래 코드를 사용하면 매일 오후 7시에 스프레드 시트를 복사 (백업) 할 수 있습니다. 그러나 아침에 폴더를 체크인하면 약 20 개의 사본이 있습니다. 사본을 1 개만 만들고 싶습니다.
어떻게 변경할 수 있나요?
아래 코드를 참조하십시오.
도움을 주셔서 감사합니다.
// 18 April 2018
// Google Apps Script to make copies of Google Sheet in specified destination folder
var RUNLOOP = true;
function createTriggers() {
var days = [ScriptApp.WeekDay.MONDAY, ScriptApp.WeekDay.TUESDAY,
ScriptApp.WeekDay.WEDNESDAY, ScriptApp.WeekDay.THURSDAY,
ScriptApp.WeekDay.FRIDAY];
for (var i=0; i<days.length; i++) {
ScriptApp.newTrigger("makeCopy")
.timeBased().onWeekDay(days[i])
.atHour(19).create();
killTrigger();// delete the trigger
}
}
function makeCopy() {
for (i=0; i<1; i++){ //to make only one copy
// generates the timestamp and stores in variable formattedDate as year-month-date
var formattedDate = Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "dd-MM-yyyy' 'HH:mm:ss");
// gets the name of the original file and appends the word "copy" followed by the timestamp stored in formattedDate
var name = SpreadsheetApp.getActiveSpreadsheet().getName() + " Backup " + formattedDate;
// gets the destination folder by their ID. with your folder's ID that you can get by opening the folder in Google Drive and checking the URL in the browser's address bar
var destination = DriveApp.getFolderById("1NMA8nNIr2ZLZKm1PkKolORhyjLk3xKdx");
// gets the current Google Sheet file
var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())
// makes copy of "file" with "name" at the "destination"
file.makeCopy(name, destination);
}
}
function killTrigger(){
var trigger = ScriptApp.getProjectTriggers()[0];
ScriptApp.deleteTrigger(trigger);
}
- 답변 # 1
- 답변 # 2
이 문제에 대해 조사했습니다 .Google 앱 스크립트 자체에서 트리거 함수를 호출하여 해당 함수에 대해 원하는대로 트리거를 설정할 필요가 없습니다. 아래 예제는 다음과 같습니다. ->현재 트리거 --->트리거 설정->그러면 스크린 샷 아래에 표시됩니다
관련 자료
- Google Apps Script. JSON to Spreadsheet - google apps script json에서 스프레드 시트로 - 결과가 너무 김 (api to sheet) 100 reg에서만 작동
- Google Script를 사용하여 Google 스프레드 시트에 일반 텍스트 행을 추가하는 방법
- Google Apps Script 스프레드 시트에서 스크립트에 액세스하는 방법
- google 스프레드 시트 스크립트 - 프로젝트 속성을 추가하거나 삭제할 수 없음
- 앱 스크립트 - google 스프레드 시트에서 bigquery-request의 totalrows를 반환하는 방법
- Google Apps Script로 getVisibleValues ()를 반환하는 방법은 무엇입니까?
- Google Sheets - google 스프레드 시트 - 시트 보호로 스크립트 실행
- Google Sheets Array Script - google 스프레드 시트 배열 스크립트 - 다른 워크 시트에서 셀 참조 붙여 넣기
- 비밀번호로 보호 된 Excel을 여는 Google Apps Script?
- javascript - Google 스크립트 HTML 서비스에서 실행되지 않는 기능
- Google 스크립트 및 고글 시트에 미래 날짜 추가
- arrays - Google 스프레드 시트를 단일 마스터 시트로 병합
- javascript - Google Apps Script를 사용하여 Google 드라이브의 여러 업로드 요소에서 로컬 파일 업로드
- javascript - google apps 스크립트 - 동적으로 변경되는 탭 이름에서 범위 합계 찾기
- Google 스프레드 시트는 날짜 열을 사용하여 환율을 가져옵니다
- Google Script 시간 초과
- javascript - 마지막 행 Google Apps 스크립트에서 다시 ID 증가
- App Script를 사용하여 Google 스프레드 시트에서 텍스트 일부 제거
- python 3.x - Google 스프레드 시트에서 날짜별로 행을 검색하려면 어떻게해야합니까?
- replaceAllText를 사용하는 RegEx Google 앱 스크립트
관련 질문
- 내장 함수로 인해 셀 값이 변경될 때 onEdit(e)가 트리거 이벤트를 생성하지 않음
- javascript : Google App Script: 단순 IF 함수가 onFormSubmit 트리거와 함께 작동하지 않음
- date : Google Apps Script: 현재까지 일반 텍스트 형식 지정
- Google 스프레드시트 -행 1 값에 따라 열 숨기기
- Google Apps Script를 사용하여 여러 열을 표시하거나 숨기는 더 빠른 방법이 있습니까?
- 선택한 항목에서 드롭다운 채우기
- Google 스프레드시트에서 | 편집된 셀의 과거 및 새 값을 전달하는 HTTP 요청 API
- javascript : Google 스크립트 측에서 CORS 헤더를 설정하는 방법은 무엇입니까?
- for 루프를 사용하여 JSON 데이터를 Google 시트로 가져오는 방법
- Google Apps 스크립트 -예외
삭제하지 않고 트리거를 다시 생성하는 것처럼 보입니다.
요구 사항을 달성하기위한 코드는 다음과 같습니다.
처음 실행
killTrigger()
기능을 한 번 수행하면 이전 트리거가 모두 삭제됩니다. 이제createTriggers()
를 실행하십시오. 한 번만 방법. 그러면 5 개의 트리거가 생성됩니다 (매주 1 회). 그것은 19Hours에 실행하고makeCopy()
를 호출 방법. 그게 전부입니다.