在编程和谷歌应用程序脚本方面,我是一个相当的菜鸟。希望有人可以帮助我,因为头痛变得无法忍受;)
情况: 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");
}
答案 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
输出二维数组。在您的实施中,我不相信它正在被正确实施。因此,我会让你更好地判断它的工作。