2017-06-10 21 views
1

我試圖編寫一個代碼,它將查看sheet1中A3的值,並檢查它是否存在於sheet2中的列A中。谷歌腳本不能讀取屬性「0」

發生了什麼事是它的工作只有當有相應的值。否則,我有這樣的「類型錯誤:無法讀取屬性 「」 從不確定的(第14行,文件 「!0 testing2」)

請幫

function findInColumn(column, id) { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var columntosearch = ss.getRange('TABELA DE HISTORICO DE PAGAMENTOS!A:A'); 
    var id = ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOSINDIRETOS!A3').getValue(); 

    var values = columntosearch.getValues(); 
    var row = 0; 

    while (values[row] && values[row][0] !== id) { 
    row++; 
    } 

    if (values[row][0] === id) 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A6'), {contentsOnly:true}); 
    else 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D6'), {contentsOnly:true}); 
} 

回答

0

我認爲JavaScript方法的indexOf將幫助你在這裏下面是文檔:。https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf?v=control

我已經改變了你的代碼一點點,以幫助您有評論在線講解的變化

function findInColumn(column, id) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    //getValues returns a multidimensionalarray, so i am using reduce to flatten it 
    var columntosearch = ss.getRange('TABELA DE HISTORICO DE PAGAMENTOS!A:A') 
    .getValues() 
    .reduce(function(a, b) {return a.concat(b);}); 

    var id = ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOSINDIRETOS!A3').getValue(); 

    //indexOf returns the index where the id is found or -1 if it isn't found 
    var isInColumn = columntosearch.indexOf(id); 

    //check that isInColumn is not -1 
    if(isInColumn > -1) 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!A6'), {contentsOnly:true}); 
    else 
    ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D3').copyTo(ss.getRange('TABELA CALCULADORA RETENCAO IMPOSTOS INDIRETOS!D6'), {contentsOnly:true}); 
} 

希望有所幫助!

+0

約旦,它的工作完美!感謝你的幫助! – ebvogt

+0

好消息!很高興幫助 –

+0

嗨喬丹,問題:當if條件得到滿足時,我需要在工作表2中列出範圍爲I:O的相應行 ,並將其值替換爲「0.00」。一整天都在努力尋找解決方案,但我認爲我的大腦凍結了。 你能幫我一下,還是告訴我我該找什麼? – ebvogt

0
function valueOfA3insheet1inColumnAsheet2() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sht1=ss.getSheetByName('sheet1'); 
    var rng1=sht1.getRange('A3'); 
    var valueinA3 = rng1.getValue(); 
    var sht2=ss.getSheetByName('sheet2'); 
    var rng2=sht2.getRange('A:A'); 
    var rng2A=rng2.getValues(); 
    var s='<table border="1"><tr><th>Value</th><th>Cell</th></tr>'; 
    for(var i=0;i<rng2A.length;i++) 
    { 
    if(rng2A[i][0]==valueinA3) 
    { 
     var r = sht2.getRange(i+1,1,1,1).getA1Notation(); 
     s+='<tr><td>' + rng2A[i][0] + '</td><td>' + r + '</td></tr>' 
    } 
    } 
    s+='</table>'; 
    var html=HtmlService.createHtmlOutput(s); 
    SpreadsheetApp.getUi().showModelessDialog(html, 'Values Found') 
}