相关疑难解决方法(0)

Google应用脚本超时~5分钟?

我的谷歌应用程序脚本正在迭代用户的谷歌驱动器文件和复制,有时将文件移动到其他文件夹.该脚本始终在5分钟后停止,日志中没有错误消息.

我在一次运行中排序数十或有时数千个文件.

有任何设置或解决方法吗?

google-apps-script google-drive-api

23
推荐指数
2
解决办法
3万
查看次数

如何增加 Google Apps 脚本中的 6 分钟执行限制?

有什么办法可以增加 Google Apps 脚本的 6 分钟执行时间限制?我认为答案可能是 G Business Suite 的抢先体验计划。如果我能加入抢先体验计划,我可能愿意每月为 G Business Suite 支付 10 美元,以便将执行限制从 6 分钟增加到 30 分钟。但是 G Suite 帮助论坛的一位顾问说抢先体验是一个有限的计划,这意味着我不能保证我能得到它。

有没有其他方法可以增加 6 分钟的执行限制?

请注意,在这个问题中,我不是在询问如何优化我的脚本以适应 6 分钟限制的想法。(我将来可能会问,如果当前问题的答案是“不,没有其他办法。”)

因此,对当前问题的适当答案是:

  • “不,没有其他方法可以增加 Google App Scripts 的 6 分钟执行限制。”
  • “是的,还有其他方法可以提高6分钟执行限制,而这些方法……”

limit execution-time google-apps-script

6
推荐指数
1
解决办法
1万
查看次数

如何解决 Google Apps Script 开发中的常见错误

问答目前是讨论的主题,请参与。目前的计划是在可能的情况下拆分为问答环节。A&A 的答案是社区维基,当状态得到解决时,问题应该成为一个问题。


前言

本问答力求成为Google Apps Script语言开发过程中遇到的常见错误的集合和参考对象,以期提高标签的长期可维护性。

在其他语言和通用标签中也有几个类似的成功经历(参见c++androidphpphp 再次),这一个也紧随其后。


它为什么存在?

新老开发人员提出的关于开发和生产过程中遇到的错误的含义和解决方案的问题数量很多,这些问题可以有效地简化为一个单一的答案。在撰写本文时,即使仅通过语言标签运行查询也会产生:

  • “找不到方法” 8页
  • “无法读取属性” 9 页
  • “在这种情况下无法调用 ...” 5 页
  • “您没有权限” 11页

由于需要考虑细微差别和通常措辞不当的标题,对于志愿者来说,链接到最相关的副本既困难又耗时。


它由什么组成?

此问答包含的条目旨在提供有关如何:

  • 解析错误信息结构
  • 了解错误意味着什么
  • 始终如一地重现(如适用)
  • 解决问题
  • 提供规范问答的链接(在可能的情况下)

目录

为了帮助您浏览不断增长的参考,请使用下面的目录:

  1. 一般错误
  2. 特定于服务的错误

这不是什么?

问答的范围仅限于普通(非平凡)。这不是:

  • 一个包罗万象的指南或“最佳实践”集合
  • 一般 ECMAScript 错误的参考
  • 气体文件
  • 资源列表(我们有一个标签维基

要添加什么?

添加条目时,请考虑以下事项:

  • 错误是否足够常见(参见“为什么”部分的示例)?
  • 该解决方案能否简明扼要地描述并适用于大多数情况?

debugging google-api google-apps-script google-apps-script-addon

6
推荐指数
1
解决办法
4614
查看次数

Google Drive - 如何列出指定文件夹中的所有文件

嗨,我被这种情况困在这里,我尝试了多种不同的方法,但我无法得到我想要的。

情况:我在谷歌驱动器上托管的文件夹中有大量文件。例如,用于报告的单个客户端文件夹有 2000-10000 个文件(这只会变得更大),我希望能够列出这些带有标题和文件 ID 以及父文件夹 ID 的文件,以便我可以创建文件的直接链接. 根据我的理解,我可以使用 google drive 来做到这一点:drive-api-client-php 我已经设置了一个项目并有一个客户端 ID 和客户端密码,我已经下载了 subversion composer 和 google-api 以及 drive-api-client- php 并使用 XAMPP

到目前为止我所做的:我已经浏览了 googles 文档并观看了他们提供的教程视频。我已经尝试了他们在那里的网页上提供的谷歌示例,这是我需要的开始。这将列出文件夹中的文件,其中包含 ID 和标题或您选择的任何字段 - 这里的两个问题是您无法指定您想要结果的文件夹,并且结果的最大数量限制为 1000。我在需要10,000。

我也看了一些谷歌的Apps脚本在这里,这似乎是VBA在Excel中拉文件ID和标题等使用,但是这也仅限于结果的最大数量,然后超时问题。这是我想要的确切类型的结果,只是没有限制。

我的问题是:在谷歌驱动器的指定文件夹中列出 10,000 个带有标题的文件 ID 的选项是什么? . 我对此很灵活,我可以在提取数据后处理数据,首先获取数据对我来说是关键。期待您的回复,非常感谢。我希望这足够清楚并且有道理。

php xampp google-api google-apps-script google-drive-api

5
推荐指数
1
解决办法
4592
查看次数

捕获Google App脚本配额和限制错误

我有一个用于Google表格的google应用脚本。最近,当我的函数在6分钟内将数据插入电子表格时,遇到了“脚本运行时”限制。我的模态窗口刚刚挂起,在开发控制台中,我得到了“超出最大执行时间”。

经过一些研究,我弄清楚了如何重新实现我的功能,以便它可以批量执行,并且不太可能达到极限。

但是,在这一点上,我想在脚本中添加一些逻辑,这些逻辑可以集中捕获此限制和所有其他可能的问题,并且仅向用户显示一些错误消息,而只是挂起而不执行任何操作。

有什么方法可以做到这一点?

google-apps-script

5
推荐指数
0
解决办法
292
查看次数

将数据从谷歌表导入 MySQL 表

使用谷歌应用程序脚本将数据从谷歌表导入 MySQL 表。我有一个非常庞大的数据集可以将谷歌工作表导入表格。但是,我遇到了超出最大执行时间的异常,是否还有其他选项可以加快执行速度。

var address = 'database_IP_address';
var rootPwd = 'root_password';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';

var root = 'root';
var instanceUrl = 'jdbc:mysql://' + address;
var dbUrl = instanceUrl + '/' + db;

function googleSheetsToMySQL() {   

  var RecId;
  var Code;
  var ProductDescription;
  var Price;

  var dbconnection = Jdbc.getConnection(dbUrl, root, rootPwd);
  var statement = dbconnection.createStatement();
  var googlesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('product'); 
  var data = googlesheet.getDataRange().getValues();  

  for (var i = 1; i < data.length; i++) { …
Run Code Online (Sandbox Code Playgroud)

javascript mysql jdbc google-apps-script

3
推荐指数
1
解决办法
5534
查看次数

由于getValue和单元格插入而可能导致处理时间长

我刚刚编写了第一个从VBA移植的Google Apps脚本,该脚本可格式化一列客户订单信息(感谢您的全力指导)。

描述:

该代码使用-前缀标识状态代码,然后将以下名字和姓氏(如果存在)组合在一起。然后,它会写上“姓氏已完成”的位置。最后,如果订单之间没有间隙,它将插入一个必要的空白单元格(请参见下图)。

问题:

问题是处理时间。它不能处理更长的数据列。我被警告

脚本大量使用方法Range.getValue。

现有优化:

根据对这个问题的回答,我尝试将尽可能多的变量保留在循环之外,并且还改进了if语句。@MuhammadGelbana建议只调用一次Range.getValue方法并移动其值...但是我不知道这将如何/将如何工作。

码:

function format() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var lastRow = s.getRange("A:A").getLastRow();
var row, range1, cellValue, dash, offset1, offset2, offset3;

  //loop through all cells in column A
  for (row = 0; row < lastRow; row++) {
    range1 = s.getRange(row + 1, 1);

    //if cell substring is number, skip it
    //because substring cannot process numbers
    cellValue = range1.getValue();
    if (typeof cellValue === 'number') {continue;}; …
Run Code Online (Sandbox Code Playgroud)

javascript optimization multidimensional-array google-sheets google-apps-script

1
推荐指数
2
解决办法
2851
查看次数