2015-08-15 5 views
1

Я пытаюсь вставить некоторые данные из электронной таблицы в другую электронную таблицу, проблема в том, что цикл не ведет себя так, как ожидалось, он дает мне только одну запись в целевой таблице. Я пытался использовать while и no function, но это не сработало.Скрипты Google для цикла

Вот код:

function move(){ 
    var homeBook = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = homeBook.getSheets()[0]; 
    var limit = sheet.getLastRow(); //number of rows in the sheet 

    var evento = sheet.getRange(2, 1, limit-1).getValues(); //event list 
    var descript = sheet.getRange(2,2,limit-1).getValues(); //description list 
    var tags = sheet.getRange(2,3,limit-1).getValues(); //tag list 
    var sheetsIDHome = sheet.getRange(2,4,limit-1).getValues(); //ID list 


    var targetBook = SpreadsheetApp.openById("1t3qMTu2opYffLmFfTuIbV6BrwsDe9iLHZJ_ZT89kHr8"); //target workbook 
    var target = targetBook.getSheets()[0]; //Sheet1 
    var targetLimit =target.getLastRow(); //Rows with content 
    var sheetsIDTarget = target.getRange(targetLimit, 4); // ID list 
    var targetRow = targetLimit+1; //row where content is going to be inserted 

for(i = 2;i <= limit;i++){//loop for each value to be inserted in each row of the target sheet 
(function(x){ 
      target.getRange(targetRow,1).setValue(x); 
      target.getRange(targetRow,2).setValue(descript[2]); 
      target.getRange(targetRow,3).setValue(tags[3]); 
      target.getRange(targetRow,4).setValue(sheetsIDHome[4]); 
      targetRow = targetRow++; 
     })(i); 
    }; 
+2

Чего вы пытаетесь достичь? «Не ведет себя так, как ожидалось» немного шире. – nha

ответ

1

Вы пытаетесь получить доступ к четыре массива из значений для столбцов 1-4.

Ваш оператор for должен соответствовать их структуре, начиная с первого экземпляра массива 0. Вы можете использовать любой из массивов для итерации, я выбрал первую.

Кроме того, я удалил функцию и заменил x экземпляром с evento.

++ увеличивает значение переменной, не требуя назначения там.

for (var i = 0; i < evento.length; i++) { 
    target.getRange(targetRow,1).setValue(evento[i]); 
    target.getRange(targetRow,2).setValue(descript[i]); 
    target.getRange(targetRow,3).setValue(tags[i]); 
    target.getRange(targetRow,4).setValue(sheetsIDHome[i]); 
    targetRow++; 
} 
+2

Это сделало бы этот ответ лучше для будущих читателей, если вместо того, чтобы спрашивать «что происходит ...», вы [править], чтобы объяснить причину предлагаемых изменений. – Mogsdad

Смежные вопросы