Мой первый скрипт приложений - может ли он быть более эффективным? - PullRequest
2 голосов
/ 14 июля 2020

Я учитель математики, изучаю программирование, и это моя первая попытка использовать Apps Script. Я использовал этот сайт, чтобы найти различные фрагменты кода и собрать их вместе, чтобы сформировать сценарий, который работает (спасибо многочисленным плакатам на этом сайте, которые бессознательно уже помогли мне!).

Мой вопрос: можно ли его отполировать и сделать более эффективным? Я предполагаю, что это возможно - я благодарен за помощь, которую любезно предоставит. список студентов и их данные; "ШАБЛОН", используемый для создания отдельной таблицы Google для каждого учащегося.

Скрипт собирает номера StudentID из ДАННЫХ и создает новую таблицу Google для каждого учащегося на основе ШАБЛОНА Google Sheet. Поместите идентификатор студента в имя файла и скопируйте идентификатор ученика в ячейку U1 на первой вкладке [ШАБЛОН содержит 2 вкладки], затем скройте вторую вкладку [называемую «импорт»]. Добавьте учащегося в качестве зрителя. Ограничить копирование / скачивание / печать для зрителя.

Большое спасибо,

Дэн

function createSheets() 
{

// ID of the Google Sheet to be used as a template for the student Sheets
  var templateId = '###TEMPLATE###';
  
// Collect all the studentIDs from DATA and store in a variable called 'students'  
  var students = Sheets.Spreadsheets.Values.get('###DATA###', '###SheetName###');

  for(var i = 0; i < students.values.length; i++)
  {
    var studentId = students.values[i][0];
        
    // Make a copy of the template file
    var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
    
    // Rename the copied file
    DriveApp.getFileById(documentId).setName(studentId + ' Learner Map');
    
    // Insert the studentId in cell U1 (of the first tab?)
    SpreadsheetApp.openById(documentId).getRange('U1').setValue(studentId);
    
    // Hide the 'import' tab
    SpreadsheetApp.openById(documentId).getSheetByName('import').hideSheet();
       
    // Add the student as a viewer 
    SpreadsheetApp.openById(documentId).addViewer(studentId + '@##EMAIL EXTENSION##');
           
// Restrict copy/download/print for the viewer 
    
    // get the file with the Advanced Drive API (REST V2)
      var file = Drive.Files.get(documentId);
      Logger.log('File "%s", restricted label was: %s', file.title, file.labels.restricted);

      // set the restricted label
      file.labels.restricted = true;

      //update the file
      Drive.Files.update(file, documentId);

      // check the updated file
      var updatedFile = Drive.Files.get(documentId);
      Logger.log('File "%s", restricted label is: %s', updatedFile.title, updatedFile.labels.restricted);
            
  }
}
...