如何在下一列的单元格中设置值?

How to set a value in the cells of the next column?

我 table 有数百个文本条目。

我想根据原文给那些词条打标签

例如:

文本 (A) 标签 (B)
脸书社交媒体
社交媒体
Whosebug 好网站

我正在使用下面的代码。

但这只会将 A 列复制到 B 列!!

 var sheet = SpreadsheetApp.getActiveSheet();
 var range = sheet.getRange('A2:A5');
 var data = range.getValues();
 var tag = sheet.getRange('B2:B5');

  for (var i = 0; i<data.length; i++) 
  {
      if(String(data[i][1]).match(/facebook|instagram/gi))
      {
        data([i][1]='Social Media');
      }
      if(String(data[i][1]).match(/Stack/gi))
      {
        data([i][1]='Good Site');
      }

 }
  tag.setValues(data); 
}

当前结果:

文本 (A) 标签 (B)
脸书脸书
Instagram的
计算器计算器计算器计算器

您使用了错误的索引。 getValues() returns 的数组如下所示:

[ [ 'Facebook' ], [ 'Instagram' ], [ 'Stack Overflow' ], [ '' ] ]

所以这段代码应该可以工作:

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('A2:A5');
var data = range.getValues();
var tag = sheet.getRange('B2:B5');

for (var i = 0; i < data.length; i++) {
    if (String(data[i][0]).match(/facebook|instagram/gi)) {
        data[i][0] = 'Social Media';
    }
    if (String(data[i][0]).match(/Stack/gi)) {
        data[i][0] = 'Good Site';
    }

}

tag.setValues(data);

试试这个:

function myfunction() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange('A2:A5');
  var data = range.getValues();
  var tag = sheet.getRange('B2:B5'); 
  var vA= tag.getValues();
  for (var i = 0; i<data.length; i++) {
    if(String(data[i][0]).match(/facebook|instagram/gi)) {
      vA([i][0]='Social Media');
    }
    if(String(data[i][0]).match(/Stack/gi)) {
      vA([i][0]='Good Site');
    }   
  }
  tag.setValues(vA); 
}