0

陣列中的一個特定的字符串,我試圖:谷歌表/ JavaScript的:無法搜索使用的indexOf()

1)找到包含關鍵字「名」 數組中的對象 - 不是很完美 - 我可以從driveapp中的文件列表中完成,但它似乎不適用於SpreadSheetApp。

2)然後獲取該對象的索引,我的電子表格
--Error--「類型錯誤:無法找到函數hasNext在對象名字,姓氏,[...](第9行,文件「測試從數組中獲取關鍵字」)

3)將該索引(實際上是列號)賦予變量,比如firstNameCol,以便我可以訪問它下面的列中的所有信息。
- 錯誤 - 我似乎錯誤地將值分配給變量,並沒有絲毫的概念如何去做。

我正在學習這個,因爲我去。那麼,如果有人更加流利地使用javascript/googlescript,那麼可以指出我可能在第二個項目中犯了什麼錯誤,並且有什麼方法可以完成第三個項目?

感謝

function testSheet() 
    { 
    var keyword = "First Name" 
    var ssId="1kRdKGDQJXxCW2q1HPclWcpsOpI1BJPvAlMjvLSX6JvY"; 
    var ss = SpreadsheetApp.openById(ssId); 
    var sheet = ss.getSheetByName("Sheet1"); 
    var values = sheet.getSheetValues(3, 2, 1, 23); 

    for(;values.hasNext(); values.next()) 
    { 
    if(values.indexOf(keyword) > -1) 

    /* I would like to assign the index to a variable should the if 
    condition return true : var keywordIndex values.getIndex();*/ 

    logger.log(values); 
    } 
    }  
+0

請分享你指的是樣品的電子表格,所以這將是容易分析您的要求。 – KRR 2015-02-17 23:33:44

+0

用此替換ssid: 1xkwsnsftnsLOU9cqwKIe2XaK5sOczNIspMKeJNQaiLM – Andrew 2015-02-18 00:28:56

+0

無法打開工作表。 – KRR 2015-02-18 00:38:17

回答

1

你得到的值的一行:

var values = sheet.getSheetValues(3, 2, 1, 23); 

它始於3行,第2列,得到的值的一行,值的23列。

我想你正試圖檢查所有的列標題,並找到標題「First Name」的列?這就是爲什麼你只獲得一行數據?

getSheetValues方法返回一個二維數組。你需要從主數組中取出第二個維度。

這裏是我的代碼所做的更改:

function testSheet() { 
    var keyword = "First Name" 
    var ssId="Your SS ID"; 
    var ss = SpreadsheetApp.openById(ssId); 
    var sheet = ss.getSheetByName("Form Responses 1"); 
    var values = sheet.getSheetValues(3, 2, 1, 23); 

    var howManyColumns = values[0].length; 
    var indexOfString = 0; 
    var thisValue = ""; 

    for(var i = 0;i < howManyColumns; i++) { 
     Logger.log('i: ' + i); 

     thisValue = values[0][i]; 
     Logger.log('thisValue: ' + thisValue); 

     indexOfString = thisValue.indexOf(keyword); 
     Logger.log('indexOfString: ' + indexOfString); 

     if(indexOfString > -1) { 

    /* I would like to assign the index to a variable should the if 
    condition return true : var keywordIndex values.getIndex();*/ 
     var thisIndexNumber = i; 
     Logger.log('this index: ' + thisIndexNumber); 
    } 
    } 
} 
+0

它只有一排厚。這些是標題。我正在嘗試製作的腳本查找每列的位置,並將每個列的位置分配給一個變量,以便在每次腳本運行時都可以更改列的順序,而不會影響輸出。 我注意到在上面的腳本中,每個項目在陣列中的位置共享相同的變量「我」。任何想法,我可能會開始尋找學習如何將每個位置分配給它自己的變量? – Andrew 2015-02-18 16:08:53

+1

使用一個對象,並在對象內部可以爲每個列標題分配一個不同的值。然後,您可以查看標題名稱分配的值。 Google文檔在地方調用數組對象,但它們不是真正的對象。有數組和對象。對象是鍵/值對。 var objTitlesToValue = {「headingOne」:「value1」,「headingTwo」:「value2」}該對象有兩個元素(屬性);兩個「鍵/值」對。您可以使用「鍵」檢索值。 Logger.log(objTitlesToValue [「headingTwo」]將返回:「value2」 – 2015-02-18 16:33:55