2015-07-25 4 views
2

Я пытаюсь получить лист с использованием рассчитанного индекса. У меня проблема, но я не уверен, что это проблема преобразования float в целое число или если есть синтаксическая ошибка. Что я ошибаюсь?Google Таблицы: получение листа по его индексу

function copySheetValues() 
{ 

    var spread = SpreadsheetApp.getActiveSpreadsheet(); 
    var sourceSheet = SpreadsheetApp.getActiveSheet(); 

    //get the source sheet data 
    var sourceDataRange = sourceSheet.getDataRange(); 
    var sourceSheetValues = sourceDataRange.getValues(); 
    var sourceRows = sourceDataRange.getNumRows(); 
    var sourceColumns = sourceDataRange.getNumColumns(); 


    // get the source sheet index and set the next sheet index 
    var sourcesheetIndex = sourceSheet.getIndex(); 
    var destinationsheetIndex = Math.round(sourcesheetIndex + 1); 

    // get the next sheet 
    var destinationSheet = spread.getSheets()[destinationsheetIndex] 

    //destination.insertSheet(sourcename, 0); 
    destinationSheet.getDataRange().offset(0, 0, sourceRows, sourceColumns).setValues(sourceSheetValues); 

} 
+0

выглядит как ошибка. Введите его в [Отслеживание проблем сценариев приложений] (https://code.google.com/p/google-apps-script-issues/issues/list). Если по какой-то причине это не считается ошибкой, это по-прежнему актуальная проблема , Возвращенный массив листов непригоден, если номер динамического индекса не может использоваться для получения определенного листа. –

+0

... и вы пропустили; в конце var destinationSheet = spread.getSheets() [destinationheetIndex] –

+0

Я просто пробовал код без двухточечной системы, и он, похоже, не отличается. Но, как ни странно, этот код, похоже, теперь получает объект листа. Я уже давно отлаживал этот код уже давно, и он не получал объект листа, а теперь он - в виде двоеточия или нет. –

ответ

0

Как getIndex() в 1 на основе и getSheets() является 0 на основе вы можете попробовать:

var destinationSheet = spread.getSheets()[sourceSheet.getIndex()]; 

идут фигура

Оговорка: GetIndex() возвращает позицию листов в электронной таблице где getSheets() имеет отношение к порядку, в котором были добавлены листы, и два могут не соответствовать, если таблица была перегруппирована после добавления листов.

Чтобы гарантировать, что лист назначения лист расположен сразу после исходного листа:

// get the source sheet index and set the next sheet index 
    var destinationsheetIndex = sourceSheet.getIndex() + 1; 

// get the next sheet 
    var sheets = spread.getSheets(); 
    for (var i=0; i<sheets.length; i++) { 
    if(sheets[i].getIndex() == destinationsheetIndex) { 
     var destinationSheet = sheets[i]; 
     break; 
     }; 
    }; 
Смежные вопросы