openByURL открывает первое значение и массив вниз по выбранному столбцу - PullRequest
0 голосов
/ 06 марта 2020

Это откроет только F2 и выстроит это значение в столбец G ... help?

function CountData() {
var sheet = SpreadsheetApp;
var urlsheet = sheet.getActiveSpreadsheet().getSheetByName('Sheet1');
  var url = urlsheet.getRange('F2:F100').getValues();
  for(var i=0;i<url.length;++i){
       var formsheet = sheet.openByUrl(url);
       var CountRows = formsheet.getActiveSheet().getLastRow();
       urlsheet.getRange('G2:G').setValue(CountRows);
}
};

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Вы перебираете массив, но не используете фактическое значение. Имейте в виду, что .getValues() возвращает двумерный массив, поэтому вам необходимо получить доступ к значению, используя [i][0].

function CountData() {
  var sheet = SpreadsheetApp;
  var urlsheet = sheet.getActiveSpreadsheet().getSheetByName('Sheet1');
  var urls = urlsheet.getRange('F2:F100').getValues(); // Renamed to be plural, indicating some kind of list
  for(var i=0;i<urls.length;++i){
    var formsheet = sheet.openByUrl(urls[i][0]); // Select the URL
    // ... the rest of your code
  }
};

Я думаю, что остальная часть кода в вашем for-l oop будет иметь проблемы, потому что

  1. Сценарий не связан с контейнером до formsheet, поэтому вы не можете получить доступ к .getActiveSheet(). Вместо этого попробуйте что-то вроде .getSheetByName().
  2. Вы не обновляете диапазон urlsheet.getRange('G2:G'), поэтому вы будете заменять значения в этом столбце для каждого URL.
1 голос
/ 06 марта 2020
function CountData() {
  var ush=SpreadsheetApp.getActive().getSheetByName('Sheet1');
  var uv=ush.getRange(2,6,99,1).getValues().map(function(r){return r[0];});
  var rA=[];
  uv.forEach(function(url){rA.push([SpreadsheetApp.openByUrl(url).getActiveSheet().getLastRow()])});
  ush.getRange(2,7,rA.length,rA[0].length).setValues(rA);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...