脚本运行时执行时间限制

2023-12-25

我的 Google Apps 脚本正在迭代用户的 Google 云端硬盘文件,并将文件复制(有时将其移动到其他文件夹)。该脚本总是在几分钟后停止,并且日志中没有错误消息。


编者注:时间限制随着时间的推移而变化,并且“消费者”(免费)和“工作空间”(付费)帐户之间的时间限制可能有所不同,但截至 2022 年 12 月,大多数答案仍然有效。


我在一次运行中对数十个甚至有时数千个文件进行排序。

有什么设置或解决方法吗?


您可以做的一件事(这当然取决于您想要完成的任务)是:

  1. 将必要的信息(即循环计数器)存储在电子表格或另一个永久存储(即 ScriptProperties)中。
  2. 让您的脚本每五分钟左右终止一次。
  3. 设置时间驱动的触发器以每五分钟运行一次脚本(或使用以下命令以编程方式创建触发器)脚本服务 https://developers.google.com/apps-script/service_script).
  4. 每次运行时,从您使用过的永久存储中读取保存的数据,并从中断处继续运行脚本。

这不是一个一刀切的解决方案,如果您发布代码,人们将能够更好地帮助您。

以下是我每天使用的脚本的简化代码摘录:

function runMe() {
  var startTime= (new Date()).getTime();
  
  //do some work here
  
  var scriptProperties = PropertiesService.getScriptProperties();
  var startRow= scriptProperties.getProperty('start_row');
  for(var ii = startRow; ii <= size; ii++) {
    var currTime = (new Date()).getTime();
    if(currTime - startTime >= MAX_RUNNING_TIME) {
      scriptProperties.setProperty("start_row", ii);
      ScriptApp.newTrigger("runMe")
               .timeBased()
               .at(new Date(currTime+REASONABLE_TIME_TO_WAIT))
               .create();
      break;
    } else {
      doSomeWork();
    }
  }
  
  //do some more work here
  
}

注意#1:变量REASONABLE_TIME_TO_WAIT应足够大以便新触发器能够触发。 (我将其设置为 5 分钟,但我认为可能会比这个更短)。

NOTE#2: doSomeWork()必须是一个执行相对较快的函数(我想说不到 1 分钟)。

注意#3:Google 已弃用Script Properties https://developers.google.com/apps-script/reference/properties/script-properties,并介绍了Properties Service https://developers.google.com/apps-script/reference/properties/properties-service取而代之的是。该功能已进行相应修改。

注意#4:第二次调用该函数时,它将 for 循环的第 i 个值作为字符串。所以你必须将其转换为整数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

脚本运行时执行时间限制 的相关文章

  • Spring Batch - ItemStreamException:未创建输出文件

    我在多线程步骤中定义了以下 FlatFileItemWriter public FlatFileItemWriter
  • 永远不会在 ios 的 google API 中获取上传数据进度

    我在我的应用程序中使用 Google Drive API 从我的应用程序上传文件 到目前为止 我成功了 并找到了上传所有类型文件的良好结果 我跟着谷歌示例 https developers google com drive examples
  • Google电子表格脚本创建特定范围内的数据验证

    我正在尝试这个脚本来创建数据验证 但它总是不起作用 function test validation var Spread SpreadsheetApp getActiveSpreadsheet var Sheet Spread getSh
  • Yammer API 限制

    Yammer Rest api 文档表示 每个应用程序每个用户在 10 秒内最多可以发出 10 个请求 问题 什么是user这里 是为当前经过身份验证的 yammer 用户发出请求的 IP 地址还是承载令牌 如果我们所有的用户都使用相同的外
  • GoogleDrive + Alamofire:上传具有属性的文件

    我正在尝试通过 Swift 2 Alamofire 将文件 参数上传到 Google Drive 在下面的代码中 我更改了以下行 https www googleapis com upload drive v3 files uploadTy
  • WHERE 条件基于 PK 的查询是否建议使用“LIMIT 1”?

    我正在查询 mySQL 数据库以检索 1 个特定行的数据 我使用表主键作为 WHERE 约束参数 E g SELECT name FROM users WHERE userid 4 userid 列是表的主键 在 mySQL 语句末尾使用
  • 使用 Google 云端硬盘缩略图的正确方法是什么?

    我首先尝试存储和使用 API 返回的链接 但它会在短时间内过期 然后我尝试在本地下载并存储图像 并从我的服务器提供它 但是当我没有使用我的帐户登录时 缩略图链接会抛出 404 错误 尽管文档是完全公开的 提供 检索文档缩略图的正确方法是什么
  • 将按钮添加到 Google 表格并在单击时为单元格设置值

    我是 Google 脚本的新手 我有一个包含 5 列的 Google 表格 在每一列上我需要一个按钮 带有文本1 2 3 4 5 在每个按钮上单击我需要将按钮文本设置为相应的单元格并隐藏单击的按钮 是否可以 您可以插入看起来像按钮的图像 然
  • 通过Java从MySQL中获取大量记录

    有一个 MySQL 表 服务器上的用户 它有 28 行和 100 万条记录 也可能会增加 我想从这个表中获取所有行 对它们进行一些操作 然后将它们添加到 MongoDB 中 我知道通过简单的 从用户中选择 操作来检索这些记录将花费大量时间
  • Postgres LIMIT/OFFSET 奇怪的行为

    我正在使用 PostgreSQL 9 6 我有一个这样的查询 SELECT anon 1 id AS anon 1 id anon 1 is valid AS anon 1 is valid anon 1 first name AS ano
  • 从 Google 电子表格接收实时更新

    我正在尝试设置与 Google 电子表格的双向同步 我可以使用其数据集将更改推送到 Google 电子表格Google 表格 API V4 https developers google com sheets 现在 我希望每当有人实时或近实
  • 在从一个表中提取的循环内调用执行以执行宏

    我目前有以下情况 macro sqlloop event id lots of code mostly proc sql segments mend 生成一个输出表 名为export table2 我需要能够为另一个表 名为 vars 中的
  • 我可以直接从我的谷歌云端硬盘在线推送/拉取吗?

    有一些方法可以通过谷歌驱动器同步 Windows 应用程序将我的本地 git 存储库同步到我的谷歌驱动器 但我想知道我是否可以完全绕过它的需要 Fro eg git remote add origin https drive google
  • 尝试通过 Google Drive API 创建权限时出现错误“需要权限类型字段”

    我改编了 Google Drive API Quickstart for Node js 中的代码 发现here https developers google com drive v3 web quickstart nodejs 20 2
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • 在 Google 表格脚本中设置活动单元格的值

    我想创建一个公式 在某个单元格更改上创建时间戳 下面的代码就可以了 我现在想做的是将公式转换为纯文本 将该时间戳锚定到工作表上 如果您手动执行此操作 您将选择时间戳 复制它们并将它们粘贴为值 我不想手动执行此操作 因此我创建了下面的脚本 它
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • Google Apps 脚本 - 是否可以仅通过 Google Apps 脚本更改表格中的某些单元格?

    我在 Google SpreadSheet 中制作了一个目录 我的电子表格有一个表格 用户可以在其中添加信息 该表是通过从数据库表获取数据的脚本动态创建的 用户可以编辑表中的某些单元格 然后单击按钮将更改保存回数据库表中 我想限制他可以手动

随机推荐

  • 如何打印Python列表中包含的字典的键和值

    lloyd name Lloyd homework 90 0 97 0 75 0 92 0 quizzes 88 0 40 0 94 0 tests 75 0 90 0 alice name Alice homework 100 0 92
  • 使用 REST 删除多条记录

    删除多个项目的 REST 方式是什么 我的用例是我有一个 Backbone Collection 其中我需要能够一次删除多个项目 选项似乎是 为每条记录发送一个 DELETE 请求 如果可能有几十个项目 这似乎是一个坏主意 发送 DELET
  • iPhone 可以支持的最大纹理尺寸是多少?

    1024 1024 或者 iPhone3gs 及以上版本只有 2048 2048 正如 iPhone 3GS 一样PowerVR SGX535 http en wikipedia org wiki IPhone ModelsGPU 最大纹理
  • 为什么在 javascript 中添加 2 + 4 时得到 24

    我正在尝试这个 function add things var first 2 var second 4 alert first second 但它给了我 24 而不是 6 我做错了什么 您正在使用 运算符连接两个字符串 尝试以下任一方法
  • JQuery 函数只能在函数内工作

    我有一个带有下拉列表的页面和 添加新 中的选项之一 为它创建的函数效果很好 town id on change function if this val ADD NEW console log Add New town id val tow
  • self 未在离子角度服务器端渲染中定义

    我正在关注https ionicframework com blog ssr with angular universal and ionic https ionicframework com blog ssr with angular u
  • 如何在控制器中使用过滤器?

    我编写了一个过滤函数 它将根据您传递的参数返回数据 我希望我的控制器具有相同的功能 是否可以在控制器中重用过滤器功能 这是我到目前为止所尝试过的 function myCtrl scope filter1 i simply used the
  • 如何使用 Maven 配置文件?

    我是 Maven 新手 在这个资源和其他资源中阅读了一些有关配置文件的信息 据我了解 如果我们想要覆盖一些默认值或做一些特定的事情 我们就使用配置文件 在我的遗留项目中 我可以看到下面的配置文件 我只看到覆盖 app mode 属性 但我没
  • 为什么我的 64 位服务以 32 位运行?

    我的 Windows 服务遇到了这个问题 在 Visual Studio 中 我已将其平台目标设置为 64 位 我已经运行 CorFlags 来验证它是否设置正确 我得到以下信息 Version v4 0 30319 CLR Header
  • ngrx EffectsModule 使 Http 服务未定义

    Using ngrx effectsv4 0 5 与 Angular v4 4 4 当我导入时EffectsModule in app module ts Http 服务变得未定义 一些代码 app module ts import Bro
  • iOS - 使用 URL 方案打开某些视图控制器

    我正在我的应用程序中使用 URL 方案 我轻松制作了一个来打开我的应用程序 只需将必要的项目添加到 info plist 即可 当前的 URL myappname 将用户带到初始视图控制器 FirstTableViewController
  • 随机添加到 Xcode 方案中的构建目标

    我正在使用 Xcode 5 和 CocoaPods 开发 iPhone 应用程序 我有一个计划和目标称为Oahu我对其进行测试 因此 看到我的两个测试目标在该方案的构建阶段构建 我并不感到惊讶 但是 有第四个构建目标无法删除 当我运行测试时
  • 在 TypeScript 的类方法中使用类型谓词

    我有一个这样定义的类 class Foo value string null constructor this value null private ensureValueExists this value is string type p
  • “String”模块对象没有属性“join”

    所以 我想在 Pygame 中创建一个用户文本输入框 我被告知要查看一个名为 inputbox 的类模块 所以我下载了 inputbox py 并导入到我的主游戏文件中 然后我在其中运行一个函数并收到错误 Traceback most re
  • CSS 选择器在 :not 选择器的最后一个匹配情况后将 css 添加到下一个位置

    这是我的 HTML 代码 div class body page check in list div class body page check in item checked a div div class body page check
  • 如何将 HTML 元素传递给 React 中的高阶函数 (HOC)?

    我经常使用HOCs https reactjs org docs higher order components html为现有的 React 组件提供附加功能 这非常简单 import Component from path to Com
  • Firebase Crashlytics 不报告崩溃

    I have 成功集成 Firebase进入我的项目 身份验证和存储效果很好 但是在简单集成 Crashlytics 并故意崩溃我的应用程序之后 而不是故意 没有崩溃报告出现在崩溃仪表板中 我确实在 Logcat 中看到 D Firebas
  • Shopify CDN 的资产 URL 是如何生成的?

    假设我上传了一张名为 logo png 的图像到 Shopify 上的商店 在 Liquid 模板中 我可以为其生成一个 URL 如下所示 logo png asset url 这会生成一个 URL 例如 http static shopi
  • 使用 sql 连接查询还是使用 pandas 合并查询,哪一种更高效?

    我想在一个表中使用多个表中的数据pandas dataframe 我有两种从服务器下载数据的想法 一种方法是使用SQL连接和检索数据 一种方法是单独下载数据帧并使用 pandas merge 合并它们 SQL Join 当我想将数据下载到p
  • 脚本运行时执行时间限制

    我的 Google Apps 脚本正在迭代用户的 Google 云端硬盘文件 并将文件复制 有时将其移动到其他文件夹 该脚本总是在几分钟后停止 并且日志中没有错误消息 编者注 时间限制随着时间的推移而变化 并且 消费者 免费 和 工作空间