将Array转换为Object并将值粘贴到不同的列中

时间:2017-09-13 10:00:09

标签: javascript arrays google-apps-script google-sheets

我有一个列,每行包含这样的文字(文字不同) - ABC1 London - ACompany: Ground Floor, Main Tower, 127 Bridge Street, London AB1 1JZ

脚本我从该文本中提取了城市名称并将其存储到新数组中。

当我尝试将这些值写入新列时,我得到Cannot convert Array to Object[][]. (line 18, file "Code")

我试图再次循环遍历该数组,但它返回101个数组(我有101行)所以当我将cities [0] .length设置为width时,它会将其粘贴到101列上。

我所需要的只是从文本中获取城市名称并将其粘贴到同一张纸上的不同列 - 例如。文本在B12栏上,我想将城市名称粘贴到R12中 - 希望它有意义。

请参阅下面的代码

function getCity() {
  var ss = SpreadsheetApp.openById('ID');
  var sh = ss.getSheetByName('Response Data');
  var range = sh.getDataRange();
  var values = range.getValues();
  var cities = [];
  var newCity = []
  for (var i=1;i<values.length;i++)
  {

    var cellText = values[i][11];
    if(typeof cellText === 'number') {continue;};
    cities.push(cellText.substring(5, (cellText + " -").indexOf("-") - 1));
  }

  Logger.log(cities);

  sh.getRange(2, 18, cities.length, 1).setValues(cities);


}

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这段代码,看看你是否收到同样的错误,

function getCity() {
  var ss = SpreadsheetApp.openById('ID');
  var sh = ss.getSheetByName('Response Data');
  var range = sh.getDataRange();
  var values = range.getValues();
  var cities = [];
  var newCity = []
  for (var i=1;i<values.length;i++)
  {
    var cellText = values[i][11];
    if(typeof cellText === 'number') {continue;};
    cities.push([cellText.substring(5, (cellText + " -").indexOf("-") - 1)]);
  }
  Logger.log(cities);
  sh.getRange(2,18,cities.length,1).setValues(cities);
}