google.script.运行时间变化很大

google.script.run times varies a lot

提问人:Rafael Brum 提问时间:4/15/2023 更新时间:4/15/2023 访问量:13

问:

所以我有一个简单的代码,似乎需要 4 到 20 秒才能运行。我不知道这是正常的事情,还是我错过了什么。 这是正常的吗,我能做些什么来改进它,使用 BigQuery 而不是 Sheets 是否有助于解决这种差异? 我已经以多种方式写了这个,for,forEach,map。我对平均时间大多感到满意,问题是它有时需要太长,比如 20 秒。

上下文: 我正在为客户开发一个 Web 应用程序,它相当简单,用于与工作表交互。代码在服务器端运行。

法典:

function getHomeTableData(req){

  var table = ws.getRange("A1").getDataRegion().getValues().filter(e=>e[1]==sc.decrypt(req.key)) 
  if(table.length==0){return 'true'}

  //sort table by dateIn
  table.sort((a,b)=>a[4]-b[4])

  //formatters
  const dateFormatter = Intl.DateTimeFormat('en-US',{timeZone:req.tmz});
  const timeFormatter = Intl.DateTimeFormat('en', { hour: 'numeric',minute:'numeric',timeZone:req.tmz });

  var res = {}
  var status = ''
  const headers = [
            { title: 'TransactionID' },
            { title: 'UserID' },
            { title: 'Location' },
            { title: 'Position' },
            { title: 'Date In' },
            { title: 'Start Time' },
            { title: 'Date Out' },
            { title: 'End Time' },
            { title: 'Shift' }            
        ]

  //Create table data
  for(var i=0;i<table.length;i++){
    const [col1, col2, locationId, role, checkInDate, checkOutDate] = table[i];
    const shiftLengthValue = shiftLength(checkInDate, checkOutDate);
    const dateIn = dateFormatter.format(checkInDate);
    const timeIn = timeFormatter.format(checkInDate);
    const dateOut = checkOutDate ? dateFormatter.format(checkOutDate) : '';
    const timeOut = checkOutDate ? timeFormatter.format(checkOutDate) : '';
    const locationNameValue = locationName(locationId);
    table[i] = [col1, col2, locationNameValue, role, dateIn, timeIn, dateOut, timeOut, shiftLengthValue];
  }

  //sort table by dateIn
  table.sort((a,b)=>a[4]-b[4])

  //return is user still checked in
  if(table[table.length-1][6]==""){
    res = {
      data:table,
      headers:headers,
      checkIn:true,
      dismissModal:false,
      transactionID:table[table.length-1][0],
      checkInDate:"",
      checkInTime:table[table.length-1][5],
      checkInRole:table[table.length-1][3],
      checkInLocation:table[table.length-1][2]
    }
  } else {
    res = {
      data: table,
      headers: headers,
      checkIn: false,
      dismissModal: false,
    }
  }
  return res
}
性能 google-apps-script 服务器端

评论

0赞 TheWizEd 4/15/2023
你的脚本中有很多东西没有包括,什么是、、、,为什么要排序两次?scshiftLengthlocationNametable

答: 暂无答案