将对象直接放在不同列中的数组中作为google apps脚本中的字符串

时间:2015-10-29 15:09:36

标签: google-apps-script google-sheets

在编程和谷歌应用程序脚本方面,我是一个相当的菜鸟。希望有人可以帮助我,因为头痛变得无法忍受;)

情况: 1个电子表格, 2张:Sheet1& Sheet 2中

在Sheet1的第一列

中,我的数据包含文本作为电子邮件plainBody。 在我的代码中,我使用正则表达式从我想要的电子邮件中获取确切的数据,这很好。

问题: 我找不到将此结果的值设置为Sheet2的B列的方法。 我不想先将结果放在columnA中,然后将其复制到columnB。

希望你们能帮助我:)我已经google了我的屁股但没有找到解决方案..

我正在使用的当前代码:

 function emailExtract(){

 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); //get active spreadsheet and sheetname
 var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');//get active spreadsheet and sheetname

 var rangeA = sheet2.getRange("A1:A");//range to later on set the numberFormat, not important
 var rangeB = sheet2.getRange("B1:B");//range to later on set the numberFormat, not important


 sheet2.clear();

 var ss = sheet.getDataRange();//define the range that includes data

 var values = ss.getValues();// get the values (plainBody email), 153 rows of data (at the moment).
 var regex = /\d+,\d*/; //Regular expression to extract the numbers i need.



 for (var i = 0;i < values.length;i++){

 var eurMoney = regex.exec(values[i]);//execute the regular expression on every row with data.


 sheet2.appendRow([eurMoney.toString()]);//this places the values in columnA, I need these values to appear in columnB!



 }



   rangeA.setNumberFormat("€0.00");
   rangeB.setNumberFormat("€0.00");



   }

1 个答案:

答案 0 :(得分:0)

而不是使用:

sheet2.appendRow([eurMoney.toString()]);

对sheet2(getLastRow)的数据范围使用sheet2.getDataRange。然后,使用

sheet2.getRange(getLastRow+1, 2).setValue(eurMoney)

代替您在代码中提到的行。因此,你的循环看起来像这样;

for (var i=0; i<values.length; i++)
{
  var range = sheet2.getDataRange();
  var lRow = range.getLastRow();
  sheet2.getRange(lRow+1, 2).setValue(eurMoney);
}

但请注意getValues输出二维数组。在您的实施中,我不相信它正在被正确实施。因此,我会让你更好地判断它的工作。