You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script无法进入自定义函数且执行超时问题咨询

问题描述

Google Apps Script似乎无法进入函数执行。日志显示函数前的所有变量都已完成初始化,说明自定义函数本身是可运行的,且一小时前测试该自定义函数还能正常工作。
enter image description here
我还有其他包含函数的脚本文件,其中唯一的全局变量来自Spreadsheet.getActiveSpreadsheet()调用。
enter image description here

运行日志

7:40:47 PM  Notice  Execution started
7:40:48 PM  Info    Mapped named ranges.
7:40:51 PM  Info    Initialized SyncData variables...
7:46:47 PM  Error   Exceeded maximum execution time

测试函数代码

代码仅用于测试自定义函数,目标是测试批量获取所有命名范围的函数,替代逐个获取的方式。

/****   retrieve settings   ******/
//const DataSourceRange       = ranges.get("DataSourceRange").getValue();
let ranges = mapNamedRanges(thisSpreadSheet.getNamedRanges());
const TrackerHeaderRow      = ranges.get('TrackerHeaderRow').getRange().getValue();
const firstRowTrackerData   = TrackerHeaderRow + 1;

const FirstColHeaderName    = ranges.get("FirstColHeaderName").getRange().getValue();

/****   setting up sheets    ******/
const TrackerSheetName      = ranges.get("TrackerSheetName").getRange().getValue();
const QuerySheetName        = ranges.get("QuerySheetNameSetting").getRange().getValue();

const trackerSheet          = thisSpreadSheet.getSheetByName(TrackerSheetName);
const querySheet            = thisSpreadSheet.getSheetByName(QuerySheetName);

Logger.log('Initialized SyncData variables...')

function testRange(){
  Logger.log('Testing ranges mapping');
  let ranges1 = mapNamedRanges(thisSpreadSheet.getNamedRanges());
  Logger.log('ranges len = ' + ranges.size);
  //Logger.log(ranges1);

  const trackerSheetNameRange = ranges1.get('TrackerSheetName').getRange();

  Logger.log(trackerSheetNameRange.getValue());

  //testing for sheets
  
  Logger.log('Testing sheets mapping');
  const sheets = thisSpreadSheet.getSheets();
  const sheet = mapSheetNames(sheets);
  Logger.log('sheet sample: ' + sheet.get("SLI Tracker"));

  for( var i in sheets ) {
   Logger.log('sheet: '+ sheets[i]);
  } 

}

自定义工具函数代码

/**
 * @param {Array} namedRangesArray - requires a multidimensional array consisting the properties and content of the namedRange
 * @return {Map} returns a keyed/mapped array
 */
function mapNamedRanges(namedRangesArray) {
  let map = new Map();

  //Logger.log('namedRanges length: ' + namedRangesArray.length);

  for (i=0; i < namedRangesArray.length; i++){
    map.set(namedRangesArray[i].getName(),namedRangesArray[i]); //key, value
  }
  
  Logger.log('Mapped named ranges.');

  return map;
}

/**
 * @param {Array} sheetsArray - an array of sheets
 * @return {Map} returns a keyed/mapped array
 */
function mapSheetNames(sheetsArray) {
  let map = new Map();

  for (i=0; i < sheetsArray.length; i++){
    map.set(sheetsArray[i].getName(),sheetsArray[i]); //key, value
  }

  return map;
}

onOpen触发函数异常说明

onOpen()函数似乎也一直在运行无响应。
enter image description here
onOpen触发函数代码如下:

function onAppOpen() { 
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('⚙️ SLI Tools')
    .addSubMenu (ui.createMenu('Tracker')
      .addItem('↺ Refresh data', 'refreshDataToTrackerAlert')
      .addItem('⇧ Upload changes', 'uploadChangesAlert')
      .addItem('⇧ Upload ALL rows', 'uploadAllChangesAlert')       
      .addSeparator()       
      .addItem('✕ Clear data', 'clearDataAlert')          
    )
    .addSubMenu(ui.createMenu('Billing')
      .addItem('⇩ Export to PDF', 'printToPdf')       
      .addSeparator()       
      .addItem('🖌 Format tables', 'formatDataTable') 
    )
    .addSubMenu(ui.createMenu('Uploader')
      .addItem('⇧ Upload new JO', 'uploadDataToSourceAlert')       
      .addSeparator()       
      .addItem('✕ Clear data', 'clearUploaderDataAlert')
    )       
    .addSeparator() 
    .addSubMenu(ui.createMenu('Data')
      .addItem('↺ Refresh background query', 'refreshQueryAlert')
    )  
    .addToUi();  
}

表格重载说明

表格本身也似乎一直在重载,以下截图证明文件网络连接正常无断连情况。
enter image description here
enter image description here

更新1

目前脚本曾短暂恢复正常,请问是否可能是GAS服务器故障导致该问题?

更新2

本次测试所用函数代码未做任何修改,最近两次成功运行平均耗时19秒,但数分钟后脚本又再次卡住。
enter image description here
Chrome浏览器未跑满CPU,仅打开4个标签页,内存占用处于合理水平。
enter image description here


内容的提问来源于stack exchange,提问作者plaridel1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 12:24:03