2015-10-20 72 views
0

我試圖從第6行爲每個新行生成一個簡單但唯一的ID。我開始從B6添加數據,並且需要在A6中生成一個ID。即使插入了新行,它也應該可以工作。問題是它顯示#NUM!我試過parseInt(x,10),parseInt(x),Number(x),並且都在工作。Google App Script spreadsheed parseInt/Number()

我的代碼:

function onEdit() { 
    var sheet  = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); 
    var edditRow = SpreadsheetApp.getActiveRange().getRow(); 
    var edditColumn = SpreadsheetApp.getActiveRange().getColumn(); 
    var column0  = sheet.getRange(edditRow, 1, 1, 2); 
    var oValues  = column0.getValues(); 

    var userProperties = PropertiesService.getUserProperties(); 
    var properties  = userProperties.getProperty('id'); 
    var id; 

    if (properties == null) { 
    userProperties.setProperty('id', '1'); 

    if ((oValues[0][0] == '') && (edditRow > 5) && (oValues[0][1] != '')) { 
     id = Number(properties); 

     sheet.getRange(edditRow, 1, 1, 1).setValue(id); 
     id += 1; 
     userProperties.setProperty('id', id); 
    } 
    } else { 
    id = Number(properties); 

    Logger.log(id); 

    if ((oValues[0][0] == '') && (edditRow > 5) && (oValues[0][1] != '')) { 
     sheet.getRange(edditRow, 1, 1, 1).setValue(id); 
     id += 1; 
     userProperties.setProperty('id', id); 
    } 
    } 
} 

Browser console

+0

請您詳細說明一下嗎?你是什​​麼意思「如果插入一個新行」我真的不明白它顯示任何錯誤。即使從另一個工作表複製具有列B列A中的值的行時,也會填充,這是我想要的嗎? –

+0

通過插入我的意思是,即使一行添加到底部或其他兩行之間插入的行腳本應該生成一個新的唯一ID。這隻意味着我需要一個我在代碼中使用的全局變體。問題是: 'sheet.getRange(edditRow,1,1,1).setValue(id); '設置單元格,但它顯示#NUM!而不是一個數字。 – MagicDragon

+0

有邏輯錯誤。甚至在沒有設置的情況下使用屬性 –

回答

0

您檢查if (properties == null)然後使用未定義properties VAR幾行到if這將導致一個無效的值。