我正在尝试在我的Google工作表脚本中编写一个函数,该函数将查看我基本上用作键值对的两列,其中我在其中列出了名称和唯一数字,然后比较名称键到“名称”列中的每个名称,并找到匹配项时,将“名称”列中的值替换为相应的ID(值)。尽管我确实了解JavaScript,但我对Google表格和Google脚本是完全陌生的。我已经为此工作了几个小时,并且已经阅读了许多不同的教程,但是我无法弄清我的问题。如果重要的话,只有一个电子表格。这是我所拥有的:
//910 is # rows in the Names column, 250 is # rows in the key-value pairs columns
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var searchRange = sheet.getRange(1, 1, 910, 250);
var rangeValues = searchRange.getValues();
function myFunction(){
for(i=0; i<910; i++){
for(j=0; j<250; j++){
var nameToReplace = rangeValues[i][5]; //(Column E)
var match = rangeValues[j][9]; //key in the key-value pairs (Column I)
var id = rangeValues[j][8]; //value in the key-value pairs (Column H)
if(nameToReplace === match){
nameToReplace.setValue(id);
};
};
};
};
当前它给我一个错误,提示“ TypeError:nameToReplace.setValue不是函数(第13行,文件“ Code”))。这是相当简单的代码,所以我敢肯定这是一个简单的初学者的错误,但是对于我来说,我无法弄清楚问题出在哪里。TIA!
我尝试在一端复制您的代码,看来问题是nameToReplace变量不是Range,因此您无法对其执行setValue()函数。
在您的代码上:
var rangeValues = searchRange.getValues();
您实际上是在获取单元格的值,而不是具有单元格范围值。
对于解决方案,我复制了您的代码,并尝试使用createTextFinder替换名称列中的值。另外,我修改了使用getValues获取值的过程,以仅获取所需的特定值。请参阅下面的示例代码(可能不是您将使用的确切代码):
// 910是“名称”列中的#行,250是键值对列中的#行
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var pairValues = sheet.getRange(1, 8, 250, 2).getValues();
var namesRange = sheet.getRange(1, 5, 910, 1)
function myFunction(){
for(var i=0; i<250; i++){
var match = pairValues[i][1]; //key in the key-value pairs (Column I)
var id = pairValues[i][0]; //value in the key-value pairs (Column H)
namesRange.createTextFinder(match).replaceAllWith(id);
};
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句