これは私の最初の質問です。私は私の知る限りでサイトを検索しましたが、私の質問の他の例は見つかりませんでした。ここでGoogle Script:各教師の学校スケジュールデータの印刷
は、Googleスプレッドシートでは、私は同じGoogleスプレッドシートドキュメント内の2枚を持って https://docs.google.com/spreadsheets/d/1HxyhoxuPK8H8_vhLg0ZZ-THyOn1cn9nPYRyls8y47iM/edit?usp=sharing
ファイルです。 最初の "スキーマ"には、教師用のベーススクールスケジュールが含まれています。これは複製する必要があります。その結果、すべての教師がこの正確な設定を行い、すべての一意のユーザーが割り当てられたクラスでのみ50行のスケジュールデータを持ちます。
2番目のシートには、ユーザーに関する情報が含まれています。各行には、UNIログインユーザ名と、ユーザuni12345などの指定されたクラス1a-1、4a-1、および8a-1が含まれています。 "uni12345"のスケジュールデータで、1a-1は1を置き換える必要があります。
私はこれらのデータ(たくさんの行)を1枚のシートにまとめたいと思います。
リストのuser1 + 2の出力をどのようにしたいかを示すCombined Exampleシートを作成しました。
他のところで質問が既に部分的に回答されている場合は、私もそれを見ることができます!
編集: 私の元の質問以来、私はそれを動作させました - 今は6分間のスクリプト実行時間制限に迫っています。それを回避する方法、例えば。最適化?このコードは1で、各行1をプッシュする必要がなくなり、新しい配列を作成し :
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スクリプトで6分の最大の除外時間を迎えています。 –
実行記録はどのように見えますか? – Cooper