Attendance 라는 Google 스프레드 시트에는 Template 이라는 시트가 있습니다. 사용자는이 시트를 복제하고 현재 날짜로 시트 이름을 바꾸고이 시트를 사용하여 학생의 출석을 표시합니다. 템플릿 시트에는 보호 된 셀이 포함되어 있으며 주어진 공간 (보호되지 않은 셀)에 학생의 ID 번호를 입력하여 출석이 표시됩니다. 다음 스크립트를 사용하여 여러 시트를 복제하고 매일 이름을 바꿉니다.
function createDailyAttendance() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var refss = ss.getSheetByName("DataPointers");
// Get the range Row and Column information.
var dataRangeRow = refss.getRange("K2").getValue();
//var dataRangeCol = ss.getRangeByName(ColName).getValue();
// Get the range of cells that store Duplicate sheet name.
var AttendanceDataRange = refss.getRange(dataRangeRow);
var AttendanceObjects = AttendanceDataRange.getValues();
var template = ss.getSheetByName('Template');
for (var i=0; i < AttendanceObjects.length; i++) {
// Put the sheet you want to create in a variable
var sheet = ss.getSheetByName(AttendanceObjects[i]);
// Check if the sheet you want to create already exists. If so,
// log this and loop back. If not, create the new sheet.
if (sheet) {
Logger.log("Sheet " + AttendanceObjects[i] + "already exists");
} else {
template.copyTo(ss).setName(AttendanceObjects[i]);
}
}
return;
}
이 스크립트를 사용하면 템플릿 에서 여러 장의 시트 사본을 만들 수 있지만 중복 사본에는 셀 / 범위 권한이 유지되지 않습니다. 템플릿에서 권한을 추출하여 루프 template.copyTo
가 시트를 만들 때마다 적용하는 루프 함수를 추가하는 방법이 있습니까?