【发布时间】:2020-05-07 18:08:52
【问题描述】:
我有一个大型数据集粘贴到 Google 表格中。我想比较这张表中的两列。 第一列是长字符串,我只关心这一列每个单元格的第一个字符。
第二列是基于文本的。我想将数据粘贴到新工作表中如果 A 列中的字符串以数字(不是字母)开头并且 B 列中的文本是“早期”。 p>
我的挑战是使用 Javascript 仅获取 A 列的 1 个字符的子字符串。错误是“TypeError:str.substring 不是函数”。我也试过 slice() 也没有效果。 Apps 脚本不支持此功能吗?
如何隔离这些第一个字符,然后与另一列进行比较?
然后,我还需要将 两个 列中符合此条件的行推送到新选项卡。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('data');
var str = sheet.getRange('A:A').getValues();
var char = str.substring(0,2);
var stage = sheet.getRange('B:B');
var endColumn = sheet.getLastColumn();
var value_stage = (stage.getValues());
var value_char = (char.getValues());
var csh = ss.getSheetByName('new_sheet'); //destination sheet
var data = [];
var j =[];
for (i=0; i<value_char.length;i++) {
if
(
(
( value_char[i] == '0') ||
( value_char[i] == '1') ||
( value_char[i] == '2') ||
( value_char[i] == '3') || etc... )
&&
( value_stage[i] == 'Early')
)
data.push.apply(data,sheet.getRange(i+1,1,1,endColumn).getValues());
j.push(i);
}
}
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
以下示例数据:
**ID** **Stage** **Name**
A texthere Early Bob
B abcdefgh Late Sally
52 texthere Early Jim
C thesdfas Late Allan
00 tsdfsdfd Late Susan
11 qqwerrww Early Ryan
Q tsdfsagd Early Sarah
98 fdsafads Early Evan
09 fdasfdsa Early Paul
10 abcdefgh New Megan
10 abcdefgh Early Cooper
NOTE: in the real dataset, columns A and B are actually K & L
ID 列在字符串的开头部分和结尾之间有那些空格。这就是我想要切掉的东西
【问题讨论】:
标签: google-apps-script google-sheets