私は複数の行と列を持つスプレッドシートを持っています。 2つの列(列3 & 4)がテキストで埋められています。私はこの2つの列からテキストを消去し、すべての特定の文字(改行、カンマ、感嘆符、引用符など)を削除します。だから私は次のスクリプトを書いた:ある列から別の列にデータを渡す方法はありますか?
function testwoD() {
var input = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw_data");
var output = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw_data");
var row_count = input.getLastRow()
var col_count = input.getLastColumn();
raw_data = input.getRange(1, 1,row_count,col_count).getValues()
temp3 = []
for (var i = 0; i < row_count; i++) {
var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>[email protected]\[\]^_`{|}~\r\n|\n|\r]/g;
var spaceRE = /\s+/g;
temp3.push(raw_data[i][4].toString().replace(punctRE, '').replace(spaceRE, ' '));
}
temp4 = []
for (var i = 0; i < row_count; i++) {
var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>[email protected]\[\]^_`{|}~\r\n|\n|\r]/g;
var spaceRE = /\s+/g;
temp4.push(raw_data[i][3].toString().replace(punctRE, '').replace(spaceRE, ' '));
}
var toAddArray3 = [];
for (i = 0; i < temp3.length; ++i){
toAddArray3.push([temp3[i]]);
}
var toAddArray4 = [];
for (i = 0; i < temp4.length; ++i){
toAddArray4.push([temp4[i]]);
}
output.getRange(1, col_count-13,row_count,1).setValues(toAddArray3);
output.getRange(1, col_count-14,row_count,1).setValues(toAddArray4);
}
それは動作しているが、それは非常に複雑で混乱している。私はそれを実際に説明するのにいくつかの困難を持っているので、それを段階的に作りました。
大幅に改善する方法はありますか?
ベスト、
サイモン。
英数字と特殊文字以外の正規表現では、これは '[^ a-zA-Z0-9 \ s]の代わりに使用できます。これは、リストに指定されていない文字と一致します。コードを理解しやすくするかもしれません。 –