여기 내 첫 번째 질문입니다. 나는 나의 지식의 최고에 사이트를 찾았지만 나의 질문의 다른 예제를 발견하지 못했다.Google Script : 각 선생님을위한 학교 일정 데이터 인쇄
다음은 Google 스프레드 시트에서 나는 동일한 Google 시트 문서의 2 장을 https://docs.google.com/spreadsheets/d/1HxyhoxuPK8H8_vhLg0ZZ-THyOn1cn9nPYRyls8y47iM/edit?usp=sharing
파일입니다. 첫 번째 "스키마"에는 교사를위한 기본 스쿨 일정이 포함되어 있으며 각 블록마다 다른 클래스가 있습니다. 모든 교사는이 정확한 설정을 갖도록 복제해야합니다. 즉, 모든 고유 사용자는 할당 된 클래스를 사용하여 동일한 50 행의 일정 데이터를 갖습니다.
두 번째 시트에는 사용자에 대한 정보가 들어 있습니다. 각 행은 UNI 로그인 사용자 이름과 사용자 uni12345에 대해 지정된 클래스 1a-1, 4a-1 및 8a-1을 포함합니다. 1a-1은 "uni12345"의 스케줄 데이터에서 1을 대체해야합니다.
저는이 모든 데이터 (많은 라인)를 하나의 시트 fx에 결합하고 싶습니다.
나는 목록에서 user1 + 2에 대한 결과를 어떻게 보여줄 것인지 제시 한 Combined Example 시트를 만들었습니다.
질문에 이미 부분적으로 부분적으로 응답하는 경우, 나는 또한 그걸 보게 될 것입니다!
편집 : 내 원래의 질문 이후로 나는 지금 그것을 만들었습니다 - 지금은 6 분짜리 스크립트 실행 시간 제한을 치고 있습니다. 주위에 어떤 방식 으로든, 예를 들면. 최적화? 이 코드는 하나 각 행을 추진하는 것을 피한다 새로운 배열을 작성합니다 :
function merge() {
var CurrentDate = new Date() ;
var CurrentDateString1 = Utilities.formatDate(CurrentDate, "GMT", "MM-dd-yyyy HH:mm:ss") ;
var ss=SpreadsheetApp.getActive();
// var mergeSht=ss.getSheetByName(CurrentDateString1);
var users=ss.getSheetByName('users');
var schema=ss.getSheetByName('schema');
var mergeSht = ss.insertSheet();
mergeSht.setName(CurrentDateString1);
var usersValues = users.getDataRange().getValues();
var schemaValues = schema.getDataRange().getValues();
var counter = 1;
for(var n=1; n < usersValues.length ; n++){
var usersValue = usersValues[n];
var uniName = usersValue[5];
var levelInd = usersValue[2];
var levelMellem = usersValue[3];
var levelUdsk = usersValue[4];
// Logger.log(usersValues[n][5])
for(var i=1; i < schemaValues.length ; i++){
var schemaValue = schemaValues[i];
if (schemaValue != null && schemaValue.length > 0) {
var level = schemaValue[3];
var subject = schemaValue[4];
var room = schemaValue[5];
var day = schemaValue[6];
var position = schemaValue[7];
var levelAfd = getlevel(level,levelInd, levelMellem, levelUdsk);
Logger.log(levelAfd);
// print
var row=[];
row.push(counter++,'','unilogin:'+ uniName, levelAfd, subject, room, day, position);
mergeSht.appendRow(row);
}
}
}
}
function getlevel(level, levelInd, levelMellem, levelUdsk){
switch (level)
{
case 1:
return levelInd;
case 4:
return levelMellem;
case 7:
return levelUdsk;
}
}
무엇을 시도 했습니까? [질문] – Cooper
질문에 새로운 해결책을 추가했습니다. 지금은 Google Script에서 6 분의 최대 절제 시간을 맞고 있습니다. –
실행 결과는 어떻게 생깁니 까? – Cooper