2016-12-26 2 views
0

Большое спасибо пользователю utphx здесь, он любезно написал этот скрипт. Хотя, я принял ответ, а затем столкнулся с проблемой при тестировании сценария в реальных документах.Импорт конкретных данных диапазона (только из столбцов)

Документ, который has the script отправляет разделенные данные из своего списка в таблицы рассылки отчетов (регион A, регион B). Сценарий помещает новые данные под старым для каждого из region (Регион A).

Однако область А получает новые строки и помещает его не под старыми, но в конце списка (см регион файла), поскольку документ содержит формулы в колонке G.

Как это можно исправить скрипт так, чтобы он отправлял и получал данные только в столбцы AD и отображал формулы справа?

Большое спасибо, Веселого Рождества и наступающего с Новым годом!

function myFunction() { 
 
    // Data Sheet 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var dataSheet = ss.getSheets()[0]; 
 
    var data = dataSheet.getDataRange().getValues(); 
 

 
    //You can change these for each Region 
 
    var regionAId = "SPREADSHEET KEY for RegionA" 
 
    var regionA = "Region A"; 
 
    var regionAdata = SpreadsheetApp.openById(regionAId); 
 
    var regionBId = "SPREADSHEET KEY for RegionB" 
 
    var regionB = "Region B"; 
 
    var regionBdata = SpreadsheetApp.openById(regionBId); 
 
    //add the other regions 
 

 
    for (var i=0; i < data.length; i++) { 
 
    if (data[i][0] == regionA){ 
 
     regionAdata.appendRow(data[i]) 
 
    }  
 
    if (data[i][0] == regionB){ 
 
     regionBdata.appendRow(data[i]) 
 
    }  
 
    //add the other regions 
 
    } 
 
}

https://stackoverflow.com/a/41313534/7337152

ответ

0

Я не думаю, что вы должны размещать отдельный вопрос в отношении вашего первоначального вопроса, но вот код, который должен работать в области A. Вы можете распространяются на другие регионы. Кажется, что вы находитесь в спешке, поэтому этот код является быстрым и неэффективным, но должен работать:

function regionA() { 
    // Data Sheet 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var dataSheet = ss.getSheets()[0]; 
    var data = dataSheet.getDataRange().getValues(); 

    //Code for Region A 
    var regionAId = "" 
    var regionA = "Region A"; 
    var regionAdata = SpreadsheetApp.openById(regionAId).getSheets()[0]; 
    var column = regionAdata.getRange('A2:A'); 
    var values = column.getValues(); 
    var ct = 1; 
    while (values[ct] && values[ct][0] != "") { 
    ct++; 
    } 

    for (var i=0; i < data.length; i++) { 
    if (data[i][0] == regionA){ 
     regionAdata.getRange(ct+2,1,1,4).setValues([data[i].slice(0, 4)]); 
     ct++ 
    } 
    } 
} 
+0

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

+0

Отлично работает! Большое спасибо :) –

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