我试图获取一个单元格区域中每个单元格的值,并得到此错误:
'错误:TypeError:在对象函数mergeAcross中找不到函数getValue。
我已经阅读了mergeAcross()
的文档,但不了解它与我的问题有什么关系。我在mergeAcross()
变量上使用了dataRange
的相反功能,即breakApart()
函数,它也无法正常工作。我也尝试过使用dataRange
值创建一个变量,并在for循环中使用它,但是后来我无法获得该值所在的行。
var Ssheet = SpreadsheetApp.getActive();
var sheet = Ssheet.getSheets()[0];
var dataRange = sheet.getRange('B2:B100');
for (var ncell in dataRange){
if (!dataRange[ncell].getValue()){
break
}
var othercellVa = sheet.getRange(dataRange[ncell].getRow(),13).getValue();
// I need to get the row of the value I'm reading
Logger.log(dataRange[ncell].getValue());
}
我应该记录下单元格的值,但是却出现了上述错误。提前致谢。
最佳答案
尝试以下方法:
function myFunction() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheets()[0];//gets the left sheet
var rg=sh.getRange('B2:B100');
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
if(!vA[i][0]) {
break;//if null
}
}
Logger.log(vA);
}
我只是想指出,在您的代码中dataRange没有值,范围只是一个单元格或相邻单元格的集合。该对象没有值。您可以使用Object.values(dataRange)对其进行测试,您将看到它仅包含方法。因此,使用这种形式的dataRange [ncell]毫无意义,因为它不包含任何值,并且所有键都是方法。因此,如果要在此范围内查找每个值的行和列,则必须先使用dataRange.getValues()获取值,然后现在有了一个二维数组。下面的示例将显示该列中每个单元格的行和列值。
function myFunction() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet177');
var rg=sh.getRange('B2:B100');
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
if(!vA[i][0]) {
Logger.log('no value row: %s col: %s',rg.getRow() + i, rg.getColumn());
continue;//if null
}else{
Logger.log('value: %s row: %s col: %s',vA[i][0],rg.getRow() + i, rg.getColumn());
}
}
}