Google表格脚本 - 无法读取属性1.0?

时间:2017-02-22 17:04:04

标签: javascript google-apps-script google-sheets google-spreadsheet-api

我试图通过脚本输入数据,以便它找到第一个空行,并在该行中找到第一个空列并将数据输入该列。对于每一行,将有几个列来插入信息,并且它是在单独的请求中完成的,我意识到这是我必须解决的另一个问题,但我还没有到达那里。

var answer = e.parameter["value"]
  var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
  var sheet = doc.getSheetByName(e.parameter["sheet"]);
  var row = sheet.getLastRow();
  var column = sheet.getLastColumn()
  var range = sheet.getRange(row, 1, 1, column);
  var data = range.getValues();

  for(var i = 1; i <= column; i++){
    if (data[1][i] == "" || data[1][i] == " "){
      sheet.getRange(1, i).setValue(answer);
      break;
    }
  }

我在运行时收到此错误:&#34; message&#34;:&#34;无法读取属性\&#34; 1.0 \&#34;来自undefined。&#34;,&#34; name&#34;:&#34; TypeError&#34;,&#34; fileName&#34;:&#34; Code(Database Macro)&#34;,& #34; lineNumber&#34;:107,&#34; stack&#34;:&#34; \ tat代码(数据库宏):107(doPost

编辑代码:

for(var i = 1; i <= column; i++){
    if (data[i] == ""){
      sheet.getRange(row, i).setValue(answer);
      break;
    }
  }

2 个答案:

答案 0 :(得分:1)

我分享你的表格,你可以看到我如何找到A1范围内的第一个空行(单元格值):A10

https://docs.google.com/spreadsheets/d/12w3Xi2CsOQ7u0i6gB5T7SWhG5_Kkv_04UJOp2ouNpF0/edit?usp=sharing

function myFunction() {
  var aa = SpreadsheetApp.getActiveSheet().getRange("A1:A10").getValues();
  var ui = SpreadsheetApp.getUi();
  var ix = null;
  for( var i = 0 ; i < aa.length; i++){
    if( aa[ i ] == "" ) { ix = i; break; }
  }
  ui.alert( "first empty row is: A" + (ix+1) ); 
}

hth,欢呼声

答案 1 :(得分:1)

你的问题在于:

如@ZigMandel所述,Javascript数组索引从0开始,因此请修改以下代码:

for(var i = 1; i <= column; i++){
    if (data[1][i] == "" || data[1][i] == " "){ // This i believe is your line 107
      sheet.getRange(1, i).setValue(answer);
      break;
    }
  }

到此:

for(var i = 0; i < column; i++){
        if (data[0][i] == "" || data[0][i] == " "){
          sheet.getRange(1, i).setValue(answer);
          break;
        }
      }

您获得的错误很可能是因为此声明数据[1] [i]。由于数组索引从0开始,你从这段代码得到一行:

 var range = sheet.getRange(row, 1, 1, column);
  var data = range.getValues();

没有索引1,因此数据[1]未定义。