首页 > 解决方案 > Google Script将值从一张纸返回到另一张纸

问题描述

这是我的第一个 Google 脚本,我在尝试将特定单元格和工作表中的值恢复到另一个工作表时有点挣扎。

我总共有 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在循环后添加一个以避免它。

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


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

在这里作为社区 wiki 发布,以便更清楚地看到它。

用户回答:

更新:现在一切都修复了!我所做的是删除 for 循环中的空间。之后,它检索了数据,但出现了 TypeError:无法读取属性“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;
    }
  }
}

推荐阅读