第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

連接代碼運行非常緩慢的谷歌腳本

連接代碼運行非常緩慢的谷歌腳本

有只小跳蛙 2022-01-13 16:13:38
我的連接函數(shù)運行速度極慢,僅 28 行數(shù)據(jù)就需要將近 4 分鐘才能運行,而且我還有其他代碼需要運行,所以我在 Google 表格中達到了最大執(zhí)行時間如果我在 Excel 中運行類似的過程,這可能需要 15-30 秒一切都在內(nèi)存中,我看不出(由于我對 javascript 的了解有限)為什么我的代碼這么慢謝謝包含數(shù)據(jù)的 Google 表格//Sheet Name//Values in Range to be overwritten by Header names//List of Header names//New Header Name 1//New Header Name 2function AsAboveSoBelow_Offers_Asks() {   AsAboveSoBelow('Elements',                  ["I can offer", "I have a ask"],                  ["Header1","Header2","Header3","Header4","Header5","Header6",                   "Header7","Header8","Header9","Header10","Header11",                   "Header12","Header13","Header14"],                   "Offers",                    "Asks");}                  function AsAboveSoBelow(shtName, arrPBV, arrHeaders, newHeader1, newHeader2) {var ss = SpreadsheetApp.getActiveSpreadsheet();var s  = ss.getSheetByName(shtName);var LC = s.getLastColumn();var r  = s.getDataRange();var v  = r.getValues();var start = new Date(); var temp ="";//Dim Avar A = [];for (var i = 0; i < v.length; i++) {     A[i] = [];   for (var j = 0; j <= arrPBV.length - 1; j++) {        A[i][j] = '';   }}for(var e = 0; e <= arrPBV.length - 1; e++) {    var search_Term  = arrPBV[e];for(var row = 0; row < v.length; row++) {  for(var col = 0; col <= arrHeaders.length - 1; col++) {      var col2 = HTN(shtName,arrHeaders[col])      var replace_Term = arrHeaders[col];       if(v[row][col2-1].toString().indexOf(search_Term) > -1) {          temp = temp + replace_Term + "|"       }     }    //remove trailing pipe     A[row][e] = temp.replace(/\|(?=\s*$)/, '')       temp = ""   } } A[0][0]= newHeader1 A[0][1]= newHeader2 s.getRange(1, v[0].length +1, v.length,A[0].length).setValues(A);var end = new Date();var executiontime = end - start;Logger.log(executiontime);};//Helper functionfunction HTN(shtName,cheader){var headers = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName).getDataRange().getValues().shift();var colindex = headers.indexOf(cheader);return colindex+1;}
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

  • 您想降低腳本的處理成本。

如果我的理解是正確的,這個答案怎么樣?請認為這只是幾個可能的答案之一。

修改點:

  • 在您的腳本中,HTN()用作 for 循環(huán)。并且功能包括SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName).getDataRange().getValues().shift();。在您的腳本中,電子表格并sheetName沒有改變。所以headers總是一樣的。我認為這可能是主要的修改點。

修改后的腳本:

請按如下方式修改您的腳本。

function AsAboveSoBelow_Offers_Asks() {

  AsAboveSoBelow(

    'Elements',

    ["I can offer", "I have a ask"],

    ["Header1","Header2","Header3","Header4","Header5","Header6","Header7","Header8","Header9","Header10","Header11","Header12","Header13","Header14"],

    "Offers", 

    "Asks"

  );

}


function AsAboveSoBelow(shtName, arrPBV, arrHeaders, newHeader1, newHeader2) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var s  = ss.getSheetByName(shtName);

//  var LC = s.getLastColumn(); // It seems that this is not used.

  var r  = s.getDataRange();

  var v  = r.getValues();

  var start = new Date(); 

  var temp ="";

  //Dim A

  var A = [];

  for (var i = 0; i < v.length; i++) {

    A[i] = [];

    for (var j = 0; j <= arrPBV.length - 1; j++) {

      A[i][j] = '';

    }

  }

  var h = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0]; // Added

  for(var e = 0; e <= arrPBV.length - 1; e++) {

    var search_Term  = arrPBV[e];

    for(var row = 0; row < v.length; row++) {

      for(var col = 0; col <= arrHeaders.length - 1; col++) {

        var col2 = h.indexOf(arrHeaders[col]) + 1; // Modified

        var replace_Term = arrHeaders[col];

        if(v[row][col2-1].toString().indexOf(search_Term) > -1) {

          temp = temp + replace_Term + "|"

        }

      }

      //remove trailing pipe

      A[row][e] = temp.replace(/\|(?=\s*$)/, '')

      temp = ""

    }

  }

  A[0][0]= newHeader1

  A[0][1]= newHeader2

  s.getRange(1, v[0].length +1, v.length,A[0].length).setValues(A);

  var end = new Date();

  var executiontime = end - start;

  Logger.log(executiontime);

};

筆記:

在我的環(huán)境中,修改腳本的處理時間約為 5 秒。

如果這不是直接的解決方案,我深表歉意。


查看完整回答
反對 回復(fù) 2022-01-13
  • 1 回答
  • 0 關(guān)注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號