Копирование данных между электронными таблицами из листов с одинаковым именем - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу скопировать ячейку с дневным счетом из листов всех моих учеников в электронную таблицу, где они рассчитываются и собираются в другую электронную таблицу, где они используются в качестве валюты для покупки вознаграждений.Обе таблицы содержат лист для каждого ученика, который назван в честь этого ученика, например, «Джон Смит»

Оригинальный скрипт Google, который я создал, работал, но это было плохое кодирование, потому что мне приходилось повторять кодирование для каждогоимя, и, следовательно, добавлять новый абзац кода каждый раз, когда мы получаем нового студента.Я хотел бы создать новый сценарий Google, который будет более элегантным и мощным и будет работать без указания имен учеников, поэтому его не нужно изменять.Я не могу получить его и продолжаю нажимать «Синтаксическая ошибка» с последней строкой.

function ImportDailyScore() {
  var dailyinput = "J27"; // Mon=J3, Tue=J9, Wed=J15, Thu=J21, Fri=J27
  var dollaroutput = "B2"; // Today=B2, Yesterday=B3, etc.

  var dollarspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var checkinspreadsheet = SpreadsheetApp.openById('some id'); 
  var checkinsheets = checkinspreadsheet.getSheets(); // get all the sheets from check in doc
  var dollarsheets = dollarspreadsheet.getSheets(); // get all the sheets from dollar doc

  for (var i=0; i<checkinsheets.length; i++){ // loop across all the checkin sheets  
    var checkindata = checkinsheets[i].getRange(dailyinput).getValue();    
    var namedcheckin = checkinsheets[i].getSheetName()
    for (var j=0; j<dollarsheets.length; j++){
      var nameddollar = dollarsheets[j].getSheetName();
      if (namedcheckin = nameddollar, dollarsheets[j].getRange(dollaroutput).setValue(checkindata))
    }
  }
}

Для справки, исходный код (который работает так, как я хотел бы), но должен указатьимя каждого студента:

function ImportDailyScore() {
  var dollarspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var checkinspreadsheet = SpreadsheetApp.openById('1Y9Ys1jcm1xMaLSqmyl_pFnvIzbf-omSeIcaI2FgjFIs');
  var dailyinput = "J3"; // Mon=J3, Tue=J9, Wed=J15, Thu=J21, Fri=J27
  var dollaroutput = "B4"; // Today=B2, Yesterday=B3, etc.

  var JohnCHECKIN = checkinspreadsheet.getSheetByName('John Smith');
  var JohnCHECKINData = JohnCHECKIN.getRange(dailyinput).getValue();
  var JohnDOLLAR = dollarspreadsheet.getSheetByName('John Smith');
  JohnDOLLAR.getRange(dollaroutput).setValue(JohnCHECKINData);

  var JenniferCHECKIN = checkinspreadsheet.getSheetByName('Jennifer Scott');
  var JenniferCHECKINData = JenniferCHECKIN.getRange(dailyinput).getValue();
  var JenniferDOLLAR = dollarspreadsheet.getSheetByName('Jennifer Scott');
  JenniferDOLLAR.getRange(dollaroutput).setValue(JenniferCHECKINData);

  etc.

1 Ответ

0 голосов
/ 14 февраля 2019

Попробуйте это:

У меня недостаточно информации, чтобы знать, как программно обрабатывать выходные данные в долларах.

function ImportDailyScore() {
  var inputA=['','J3','J9','J15','J21','J27',''];
  var dailyinput = inputA[new Date().getDay()]; 
  if(dailyinput) {
    var dollaroutput = "B2"; // Today=B2, Yesterday=B3, etc. Not sure how to handle this programmatically I'd have to see the sheet
    var dollarspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var checkinspreadsheet = SpreadsheetApp.openById('id'); 
    var checkinsheets = checkinspreadsheet.getSheets(); // get all the sheets from check in doc
    var dollarsheets = dollarspreadsheet.getSheets(); // get all the sheets from dollar doc
    for (var i=0; i<checkinsheets.length; i++){ // loop across all the checkin sheets  
      var checkindata = checkinsheets[i].getRange(dailyinput).getValue();    
      var namedcheckin = checkinsheets[i].getSheetName();
      for (var j=0; j<dollarsheets.length; j++){
        var nameddollar = dollarsheets[j].getSheetName();
        if (namedcheckin == nameddollar) {
          dollarsheets[j].getRange(dollaroutput).setValue(checkindata);
        }
      }
    }
  }else{
    SpreadsheetApp.getUi().alert(Utilities.formatString('Today is %s no school.', Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E")));
  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...