我試圖setValues從一個陣列中使用我有 10 列資料[9]的陣列。我不斷收到一個關于有 10 列范圍但只有 1 列資料的應用程式腳本錯誤。我在[]陣列周圍看到 3 個括號。整個陣列周圍有一組括號,[]每行資料周圍有兩個括號。不確定這是否是問題。
// Search Records for Contact ID Number
function searchExistingCustomers() {
const ss = SpreadsheetApp.getActiveSpreadsheet(); //get Active Sheet
const searchSheet = ss.getSheetByName("Search Sheet"); //get Sheet "Search Sheet"
const existingSheet = ss.getSheetByName("Existing Customers"); //get Sheet "Existing Customers"
var lastNameSearch = searchSheet.getRange("B2").getValue(); //last name search string
var columnIndex = 9
var lRow = existingSheet.getLastRow();
var lColumn = existingSheet.getLastColumn();
var columnArray = existingSheet.getRange(2,columnIndex,lRow).getValues(); //Get Values in Array 1st row is header row
var valuesFound=false; //variable to boolean value
// examin the values in the array
var rowSearchValue = 0;
let searchResults = [];
for (var y = 0; y < lRow; y ) {
if(columnArray[y] == lastNameSearch){
var searchRow = (y 2);
var searchInfo = existingSheet.getRange(searchRow,1, 1, 10).getValues();
searchResults.push(searchInfo);
rowSearchValue = (rowSearchValue 1);
}
}
//Send Search Results to Search Spreadsheet
searchSheet.getRange(5,1,rowSearchValue,10).setValues(searchResults);
Logger.log(ss);
Logger.log(existingSheet);
Logger.log(existingSheet);
Logger.log(lastNameSearch);
Logger.log(lRow);
Logger.log(lColumn);
Logger.log(columnArray);
Logger.log(rowSearchValue);
Logger.log(searchRow);
Logger.log(searchResults);
}
uj5u.com熱心網友回復:
改裝要點:
getValues()類范圍回傳二維陣列。在您的腳本中,var searchInfo = existingSheet.getRange(searchRow, 1, 1, 10).getValues();被推送到帶有searchResults.push(searchInfo);. 在這種情況下,searchResults是 3 維陣列。我認為這可能是您的問題的原因。當您的腳本因反映這一點而被修改時,請按如下方式進行修改。通過此修改,我認為可以消除您的錯誤。從
searchResults.push(searchInfo);到
searchResults.push(searchInfo[0]);
但是,當
getValues回圈使用時,程序成本變高。
當這些點反映在您的腳本中時,它變成如下。
修改后的腳本:
function searchExistingCustomers() {
const ss = SpreadsheetApp.getActiveSpreadsheet(); //get Active Sheet
const searchSheet = ss.getSheetByName("Search Sheet"); //get Sheet "Search Sheet"
const existingSheet = ss.getSheetByName("Existing Customers"); //get Sheet "Existing Customers"
var lastNameSearch = searchSheet.getRange("B2").getValue(); //last name search string
var columnIndex = 9
var values = existingSheet.getDataRange().getValues();
var res = values.reduce((ar, r) => {
if (r[columnIndex - 1] == lastNameSearch) ar.push(r.splice(0, 10));
return ar;
}, []);
searchSheet.getRange(5, 1, res.length, res[0].length).setValues(res);
}
參考:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342677.html標籤:javascript 数组 谷歌应用程序脚本 谷歌表格
