Google apps script 检查执行是否在调试模式下运行

Google apps script 检查执行是否在调试模式下运行,google-apps-script,environment,Google Apps Script,Environment,有没有办法检查GoogleApps脚本是否在调试模式下运行 例如,我有一个脚本,我使用了提示符,但在调试模式下,我想为这些提示符设置预定义值。尝试使用debugMyFunc()调试myfunc() 问题 如果您正在寻找调试环境的模拟,那么没有,没有专用的方法-唯一的模式是生产(尽管有些服务,如和,确实有调试方法) 解决方法 最接近环境的是使用PropertiesService存储、更新和检索脚本/用户属性。您可以按每个用户或更接近环境变量的每个脚本保留设置,并根据需要使用它们 因此,要检查是否在

有没有办法检查GoogleApps脚本是否在调试模式下运行

例如,我有一个脚本,我使用了
提示符
,但在调试模式下,我想为这些提示符设置预定义值。

尝试使用debugMyFunc()调试myfunc()


问题

如果您正在寻找调试环境的模拟,那么没有,没有专用的方法-唯一的模式是生产(尽管有些服务,如和,确实有调试方法)

解决方法

最接近环境的是使用
PropertiesService
存储、更新和检索脚本/用户属性。您可以按每个用户或更接近环境变量的每个脚本保留设置,并根据需要使用它们

因此,要检查是否在调试模式下运行,可以从存储中加载属性(最好是在启动时,以减少属性的读/写),检查类似于
模式的内容,然后根据需要传递+更改和持久化结果

一个简单的例子:

/**
 * @returns {object}
 */
function getEnvironment() {
  const store = PropertiesService.getScriptProperties();
  const env = JSON.parse(store.getProperty("env") || "{}");

  env.Modes = Object.freeze({
    Debug : 1,
    Prod : 2
  });

  return env;
}
然后,在主脚本中:

function onOpen() {

  let { mode, Modes } = getEnvironment();

  if(mode === Modes.Debug) {
    //do something in debug
  }

  mode = Modes.Prod;

  //continue in production
}
参考资料

  • PropertiesService

  • 好主意!我一直在考虑使用一个布尔值
    var debug=true
    ,但有一个“危险”就是不考虑根据上下文(从电子表格或通过调试器执行)更新变量。。。我认为你的解决方案更好。
    function onOpen() {
    
      let { mode, Modes } = getEnvironment();
    
      if(mode === Modes.Debug) {
        //do something in debug
      }
    
      mode = Modes.Prod;
    
      //continue in production
    }