【问题标题】:google apps script very very slow谷歌应用程序脚本非常非常慢
【发布时间】:2014-09-03 13:12:18
【问题描述】:

我使用谷歌电子表格作为一个简单的成员数据库,我想创建一个用户界面来搜索它们(这个的主要用户在技术上不是很熟练,并且有很多与每个成员相关的数据,所以将其视为电子表格可能有点乏味)

我编写了以下脚本,该脚本昨晚有效,但运行速度似乎很慢,今天超时了,我不知道为什么。

function findMember() {
  // set spreadsheet variable
  var SS = SpreadsheetApp.getActiveSpreadsheet();

  // set sheet variables
  var memberSearchSheet = SS.getActiveSheet();
  var memberDataSheet = SS.getSheetByName("Member Data");

  // get the search variables
  var searchFirstName = memberSearchSheet.getRange('C2').getValue();
  var searchLastName = memberSearchSheet.getRange('C3').getValue();

  // get last row of data
  var lastRow = memberDataSheet.getLastRow();
  for (var i = 2;lastRow;i=i+1){
    if (searchFirstName == memberDataSheet.getRange('R'+i+'C2').getValue() && searchLastName == memberDataSheet.getRange('R'+i+'C3').getValue()){
      memberSearchSheet.getRange('C5').setValue(memberDataSheet.getRange('R'+i+'C5').getValue());
      //throw new Error("ouch")
    }
  }

  // small pop up notification in bottom right corner .toast(message, title, display time)
  //var message = "Your search for " + searchFirstName + " " + searchLastName + " is complete.";
  //SS.toast(message,"Search Complete",15);

};

【问题讨论】:

  • 我会将您的 For 循环更改为:for (i = 2;i < lastRow; i++){
  • 干杯修复这个循环和我选择的答案帮助分配:)

标签: google-apps-script


【解决方案1】:

您可以尝试一步获取数组中的所有数据,然后快速将您的值与数组中的值进行比较。像这样的:

  var sheet = SpreadsheetApp.getActive().getSheetByName("Member Data");
  var data = sheet.getDataRange().getValues();
  for (var i = 1; i < data.length; i++) {
    if (data[i][0] == firstName && data[i][1] == secondName) {
      throw("Found");
    }
  }

【讨论】:

  • if (data[i][0] == firstName && data[i][1] == secondName) { throw("Found"); // 我想在此处输入数字 }
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2020-04-09
  • 2017-04-27
  • 1970-01-01
相关资源
最近更新 更多