主要思想是不需要回圈來生成a VLOOKUP,因為當資料量非常大時它會產生巨大的減速。
要直接在作業表中對資料進行 VLOOKUP,我執行以下操作:
function myFunction() {
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var searchValue = s.getRange("Test!A1").getValue();
var data = SpreadsheetApp.openById("XXXXXXXXXXXX").getSheetByName("Test 2");
var dataValues = data.getRange("A1:A").getValues();
var dataList = dataValues.join("?").split("?");
var index = dataList.indexOf(searchValue);
if (index === -1) {
s.getRange("Test!B1").setValue('off');
} else {
var row = index 1;
var foundValue = data.getRange("D" row).getValue();
s.getRange("Test!B1").setValue(foundValue);
}
}
但是這種方法有一個很大的問題,因為當多個不同的賬戶試圖同時訪問這張表時,type error: could not connect sheet xxxxx有時會出現錯誤或導致巨大的延遲。
那么我找到的解決方案是什么?將電子表格頁面發布為 CSV,以便它們可以使用,并且當許多帳戶呼叫同一個電子表格時不會發生此錯誤。
目前,由于我在匯入包含多列資料的 CSV 時還沒有找到indexOf使用第一列的方法,所以我不得不只使用 A 列的復制資料創建一個電子表格頁面,然后我進入了最終像這樣的結果VLOOKUP:
(var searchValue本例中的值為two)
function myFunction() {
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var url_columnA = 'AAAAA';
var url_vlookup = 'BBBBB';
var dataSearch = Utilities.parseCsv(UrlFetchApp.fetch(url_columnA));
var dataList = dataSearch.join("?").split("?");
var searchValue = s.getRange("Test!A1").getValue();
var index = dataList.indexOf(searchValue);
if (index === -1) {
s.getRange("Test!B1").setValue('off');
} else {
var row = index;
var dataVlookup = Utilities.parseCsv(UrlFetchApp.fetch(url_vlookup));
var foundValue = dataVlookup[row][3];
s.getRange("Test!B1").setValue(foundValue);
}
}
回傳示例:
other number
var url_vlookup:
| 可樂 | B欄 | 科爾C | 寒冷的 |
|---|---|---|---|
| 家 | 1 | 一種 | 贏 |
| 離開 | 2 | b | 疏松 |
| 一 | 3 | C | 數字 |
| 二 | 4 | d | 其他號碼 |
| 三 | 5 | e | 又號? |
var url_columnA:
| 可樂 |
|---|
| 家 |
| 離開 |
| 一 |
| 二 |
| 三 |
有什么方法可以處理var url_vlookup資料以搜索 A 列中的值,這樣就不必使用此頁面var url_columnA分隔或者是不回圈的唯一方法?
uj5u.com熱心網友回復:
使用Array.map決議后,第一列可以很容易地分開:
const dataVlookup = Utilities.parseCsv(UrlFetchApp.fetch(url_vlookup));
const url_columnA = dataVlookup.map(row => row[0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473314.html
標籤:谷歌应用脚本
下一篇:文本按鈕全寬
