Arrays GoogleApps脚本和解析器:从两个1d数组构建2d数组的简单方法?

Arrays GoogleApps脚本和解析器:从两个1d数组构建2d数组的简单方法?,arrays,google-apps-script,google-sheets,Arrays,Google Apps Script,Google Sheets,我正在使用从网站上的数据构建一些数组(以及避免每次运行程序时都必须阅读页面的方法): 行“rgMyRange.setValues(crewNames);”不起作用,因为我只有一个一维数组。但我最终想将crewNames写入A列,将crewURLs写入B列,我认为使用2d数组可以相当容易地完成这项工作。如果可以的话,尽量避免构建循环来遍历我的数据。有没有一种简单的方法(无需构建这样的循环)将这两个1d数组组合成一个2d数组,或者是我在解析器中缺少的可以自动执行的东西? 在脚本中,crewNames

我正在使用从网站上的数据构建一些数组(以及避免每次运行程序时都必须阅读页面的方法):

行“rgMyRange.setValues(crewNames);”不起作用,因为我只有一个一维数组。但我最终想将crewNames写入A列,将crewURLs写入B列,我认为使用2d数组可以相当容易地完成这项工作。如果可以的话,尽量避免构建循环来遍历我的数据。有没有一种简单的方法(无需构建这样的循环)将这两个1d数组组合成一个2d数组,或者是我在解析器中缺少的可以自动执行的东西?

  • 在脚本中,
    crewNames
    crewURLs
    是一维数组
  • 您希望将
    crewNames
    crewURLs
    分别放在活动工作表的“A”列和“B”列中
如果我的理解是正确的,这次修改怎么样

发件人: 致: 参考资料:
如果我误解了你的问题,而这不是你想要的结果,我道歉

function readCrew() {
  var categoryCrewURL = "https://stt.wiki/wiki/Category:Crew"
  var categoryCrewText = "Category-Crew-List";
  var wholePagefromText = 'next page';
  var wholePagetoText = 'previous page';

  var content = getCacheData(categoryCrewURL, categoryCrewText);
  var scraped = Parser
                .data(content)
                .from(wholePagefromText)
                .to(wholePagetoText)
                .build();

  var fromText = 'href="';
  var toText = '"';
  var crewURLs = Parser
                 .data(scraped)
                 .from(fromText)
                 .to(toText)
                 .iterate();
  Logger.log(crewURLs);
  var fromText = 'title="';
  var toText = '">';
  var crewNames = Parser
                  .data(scraped)
                  .from(fromText)
                  .to(toText)
                  .iterate();
  Logger.log(crewNames);
  ssActive = SpreadsheetApp.getActiveSpreadsheet();
  rgMyRange = ssActive.getRange("A:A");
  rgMyRange.setValues(crewNames);
}

function getCacheData(targetURL, targetCacheName) {
  const crusher = new cUseful.CrusherPluginCacheService().init ({
    store:CacheService.getUserCache()
  });
  Logger.log(targetURL);
  Logger.log(targetCacheName);
  var cached = crusher.get (targetCacheName);
  if (cached != null) {
    return cached;
  }
  // This fetch takes 20 seconds:
  var result = UrlFetchApp.fetch(targetURL);
  var contents = result.getContentText();
  crusher.put (targetCacheName, contents);
  return contents;
}
ssActive = SpreadsheetApp.getActiveSpreadsheet();
rgMyRange = ssActive.getRange("A:A");
rgMyRange.setValues(crewNames);
var values = crewNames.map(function(e, i) {return [e, crewURLs[i]]}); // Added
ssActive = SpreadsheetApp.getActiveSheet(); // Modified
rgMyRange = ssActive.getRange(1, 1, values.length, values[0].length); // Modified
rgMyRange.setValues(values); // Modified