Google Script返回值从一个工作表到另一个工作表



这是我的第一个Google Script,我有点挣扎,同时试图从一个特定的单元格带回值&页到另页

我总共有18列,第一个是ID,它将是用户需要添加的输入,以便从一个工作表检索数据到另一个工作表。因为第一个是ID,并且已经由用户输入,所以我需要检索第2到18列的数据下面是我的代码:

function SearchID() {
var columnIndex = 0;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formS = ss.getSheetByName("Manual Costs App"); // App sheet
var str = formS.getRange("D6").getValue(); // The ID to search will be inputted here
var dataS = ss.getSheetByName("Inputs").getDataRange().getValues(); // Retrieving the data based on the user input
for (var i = 0; i<=dataS.length; i++) {
var row = dataS[i];
if (row[columnIndex] == str) {
formS.getRange("D9").setValue(row[1]);
formS.getRange("D13").setValue(row[2]);
formS.getRange("D14").setValue(row[3]);
formS.getRange("D15").setValue(row[4]);
formS.getRange("D16").setValue(row[5]);
formS.getRange("D18").setValue(row[6]);
formS.getRange("D19").setValue(row[7]);
formS.getRange("D20").setValue(row[8]);
formS.getRange("D21").setValue(row[9]);
formS.getRange("D22").setValue(row[10]);
formS.getRange("D23").setValue(row[11]);
formS.getRange("D25").setValue(row[12]);
formS.getRange("D26").setValue(row[13]);
formS.getRange("D27").setValue(row[14]);
formS.getRange("D28").setValue(row[15]);
formS.getRange("D29").setValue(row[16]);
formS.getRange("D30").setValue(row[17]);
break;
}
}
}

我正在构建的示例电子表格的链接在这里

现在一切都修好了!我所做的是删除for循环中的空格。在那之后,它检索了数据,但是一个TypeError: Cannot read property '0'。还解决了在循环后添加break以避免它。

这是for循环中的一个类型,注意length的拼写:

for (var i = 1; i <= values.lenght; i++)

您也不想像您那样逐行设置值,获得更长的范围并使用setValues()而不是setValue()设置值。这里实际上有很多重构要做。

用户确实找到了答案并在问题上进行了更新。

作为社区wiki在这里发布,这样可以看得更清楚。

用户回答:

更新:现在一切都修复了!我所做的是删除for循环中的空格。之后,它检索到数据,但是出现TypeError: Cannot read property '0'。也解决了这个问题,在循环后添加一个断点来避免它。

function SearchID() {
var columnIndex = 0;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formS = ss.getSheetByName("Manual Costs App"); // App sheet
var str = formS.getRange("D6").getValue(); // The ID to search will be inputted here
var dataS = ss.getSheetByName("Inputs").getDataRange().getValues(); // Retrieving the data based on the user input
for (var i = 0; i<=dataS.length; i++) {
var row = dataS[i];
if (row[columnIndex] == str) {
formS.getRange("D9").setValue(row[1]);
formS.getRange("D13").setValue(row[2]);
formS.getRange("D14").setValue(row[3]);
formS.getRange("D15").setValue(row[4]);
formS.getRange("D16").setValue(row[5]);
formS.getRange("D18").setValue(row[6]);
formS.getRange("D19").setValue(row[7]);
formS.getRange("D20").setValue(row[8]);
formS.getRange("D21").setValue(row[9]);
formS.getRange("D22").setValue(row[10]);
formS.getRange("D23").setValue(row[11]);
formS.getRange("D25").setValue(row[12]);
formS.getRange("D26").setValue(row[13]);
formS.getRange("D27").setValue(row[14]);
formS.getRange("D28").setValue(row[15]);
formS.getRange("D29").setValue(row[16]);
formS.getRange("D30").setValue(row[17]);
break;
}
}
}

最新更新