免责声明我是个编程新手,英语也不太好,所以请原谅我的解释不好。
我有这个代码:
function SearchAttributebyName(ID){
var SheetDatabase = SpreadsheetApp.openById("SS ID");
var Sheet = SheetDatabase.getSheetByName("Sheet1");
var Cell = Sheet.getRange("A3:A");
var Value = Cell.getValues().map(x => x[0]);
Logger.log(Value.length);
Value.forEach((elements, i) => {
if (elements == ID) {
let baris = i + 3;
let name = Sheet.getRange(baris,1,1,1).getValues();
let A= Sheet.getRange(baris,15,1,1).getValues();
let B= Sheet.getRange(baris,16,1,1).getValues();
let C= Sheet.getRange(baris,17,1,1).getValues();
let D= Sheet.getRange(baris,4,1,1).getValues();
let E= Sheet.getRange(baris,21,1,1).getValues();
let F= Sheet.getRange(baris,22,1,1).getValues();
let G= Sheet.getRange(baris,11,1,1).getValues();
let H= Sheet.getRange(baris,12,1,1).getValues();
let I= Sheet.getRange(baris,7,1,1).getValues();
let J= Sheet.getRange(baris,8,1,1).getValues();
let K= Sheet.getRange(baris,9,1,1).getValues();
let L= Sheet.getRange(baris,27,1,1).getValues();
let M= Sheet.getRange(baris,5,1,1).getValues();
return "✅ DATA OF " + name + ": " + "\n" + "\n" +
"DataA : " + A+ "\n" +
"DataB : " + B + "\n" +
"DataC : " + C + "\n" +
"DataD : " + D + "\n" +
"DataE : " + E + "\n" +
"DataF : " + F + "\n" +
"DataG : " + G + "\n" +
"DataH : " + H + "\n" +
"DataI: " + I + "\n" +
"DataJ : " + J + "\n" +
"DataK : " + K + "\n" +
"DataL : " + L + "\n" +
"DataM : " + M;
}
return "DATA NOT FOUND";
});
}
function trythebot() {
Logger.log(SearchAttributebyODPName("XXXXXXX"));
}
当我用Logger.log
检查SearchAttributebyName
函数时,这工作正常。但是当我用trythebot
检查SearchAttributebyName
函数时,我一直得到null
输出。请帮助。
2条答案
按热度按时间s4chpxco1#
您需要做一个小的更改,
SearchAttributebyName
实际上不返回任何内容,因为forEach
循环本身没有return语句。这里有一个可能的方法
k10s72fa2#
Array.forEach()方法接受一个函数,并对数组中的每个元素执行该函数。函数中的
return
语句只是让.forEach()
继续执行下一个元素。返回值不会传递到任何地方。您可以改用
Array.map()
来使代码正常工作,如下所示: