簡體   English   中英

Google Scripts 簡單搜索

[英]Google Scripts Simple Search

我想在工作表中搜索工作表中的值,然后返回找到該值的行和列。

我精通 VBA,並使用.Find函數很容易地完成了這項工作。 然而,在網上搜索了最后 30 分鍾后,我驚訝地發現,找到這個極其簡單的函數的代碼是如此困難。 我覺得我在暮光之城。 Javascript 真的沒有類似於.Find東西嗎? 如果是這樣,當 VBA 似乎能夠以更簡單的方式完成相同的任務時,為什么會如此多地使用這種語言? 請指教。

你在比較蘋果和橙子。 JavaScript 和 VBA 是具有不同目標的不同語言。 VBA 的構建允許它與 MSSQLServer 無縫集成。 原生形式的 JavaScript 根本沒有關系數據庫功能。 它更適用於通過 DOM 操作網頁。 (它可以做的不止這些,但這是它的主要功能。)雖然 VBA 可以做一些 Javascript 可以做的事情,但這是一種相當笨拙的方式(恕我直言),並且只專注於一組相當具體的問題與非常具體的軟件和硬件基礎設施相關聯。 雖然在某些情況下該功能可能很好,但您今天在 Web 上看到的大多數 JavaScript 對數據庫根本不感興趣。

我不清楚您要連接的數據源是什么,但是如果您專門尋找 JavaScript 數據解決方案,您可能需要查看諸如MongoDB 之類的東西,以及專門為此開發的代碼庫。 還有大量其他 JS是關系數據或特定於數據庫的,您可以在npm 之類的地方搜索這些庫。 或者您可以將 JavaScript 與固有地包含數據庫功能的語言結合起來, PHP就是一個很好的例子。

我假設您正在調用類似mysheet.getDataRange().getValues() ,它將谷歌工作表的內容作為數組數組返回,例如[[row1A, row1B], [row2A, row2B]]

使用 JS,您可以使用indexOf獲取數組中某個值的索引,它返回找到的項目的索引,如果該項目不在數組中,則返回-1 我認為您不能直接搜索兩個嵌套數組。 相反,您可以嘗試遍歷外部數組並搜索內部數組。 像這樣的東西:

// get data from google sheet, doing something like this
var data = mysheet.getDataRange().getValues()

// define our own function
function findItem(data) {
  // loop over outer array
  for (var i=0; i < data.length; i++) {
    var row = data[i];                   // get the inner array
    var idx = row.indexOf(searchValue);  // search for value
    // if the value is found, return [row, column] 
    if (idx > -1) {
      return [i, idx];
    }
  }

// call the function
var res = findItem(data);
var row = res[0];
var col = res[1];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM