提高我的脚本性能 Google Sheets 脚本

2024-04-29

我创建了一个函数,每当我运行 AppendRow 脚本时,AY 列中没有点(“.”)的每一行,包含我想要的每个信息/列的数组从该表将被转移到我的主表,其中有13k rows atm.

通常,每天大约有 20-40 行被粘贴到第一个工作表中,此脚本会自动将列重新排列到我的主工作表中。

PROBLEM:问题是附加到我的主表的每一行都需要大约8-15秒即可转移有时我会收到“超出最大执行时间”错误,这真的很烦人。

有什么方法可以让我的代码运行得更快,或者只是让脚本运行超过 5 分钟?

function AppendRow() {

  var app = SpreadsheetApp;
  var Sheet = app.getActiveSpreadsheet().getSheetByName("Sheet1");

  var ss2017 = SpreadsheetApp.openById("");
  var sheet2017 = ss2017.getSheetByName("2017");

  var lastSourceRow = Sheet.getLastRow();
  var lastSourceCol = Sheet.getLastColumn();

  var sourceRange = Sheet.getRange(1, 1, lastSourceRow, lastSourceCol);
  var sourceData = sourceRange.getValues();
  var lenght = sourceData.length;
  //Logger.log(lenght);

  var time = new Date();
  time = Utilities.formatDate(time, "GMT+01:00", "dd/MM/yy, HH:mm:ss");


      for(i=5326;i<=lenght;i++) 
//my i=5326 is just cuz I had already
// information on my sheet that was transfered before this script existed
      {

        var columnAY = Sheet.getRange(i,51).getValue();
        var checkReservation = Sheet.getRange(i,2).getValue();

           if(columnAY == ".")
           {
       }
       else
       {
      var B = Sheet.getRange(i,2).getValue();
      var F = Sheet.getRange(i,6).getValue();
      var E = Sheet.getRange(i,5).getValue();
      var K = Sheet.getRange(i,11).getValue();
      var L = Sheet.getRange(i,12).getValue();
      var V = Sheet.getRange(i,22).getValue();
      var O = Sheet.getRange(i,15).getValue();
      var P = Sheet.getRange(i,16).getValue();
      var Q = Sheet.getRange(i,17).getValue();
      var AF = Sheet.getRange(i,32).getValue();
      var AG = Sheet.getRange(i,33).getValue();
      var N = Sheet.getRange(i,14).getValue();
      var AI = Sheet.getRange(i,35).getValue();
      var AB = Sheet.getRange(i,28).getValue();
      var AC = Sheet.getRange(i,29).getValue();   



      var array = ["",B,F,E,K,L,"",V,O,P,Q,AF,AG,"","",N,N,AI,"","",AB,AC,"","","","",time];

      sheet2017.appendRow(array);


       Sheet.getRange(i,51).setValue(".");


       }
  }
}

附注:我的电子表格中还有一个菜单,每次我想不确定这是否与问题相关时都可以运行脚本:P

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Menu')
      .addItem('Copy to 2017', 'AppendRow')
      .addToUi();

每条评论都值得赞赏! :)


我必须承认,在弄清楚我的 i 与你的 i 的协调方式方面存在一些问题,但我认为我的专栏是正确的。所以检查一下,但这应该运行得更快一点。

function AppendRow() 
{
  var ss0=SpreadsheetApp.getActive();
  var sh0=ss.getSheetByName('Sheet1');
  var rg0=sh0.getDataRange();
  var vA0=rg0.getValues();
  var ss1=SpreadsheetApp.openById(id);
  var sh1=ss1.getSheetByName('2017');
  var TimeStamp=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yy HH:mm:ss");
  for(i=5326;i<vA0.length;i++)
  {
    var columnAY=vA0[i][50];
    var checkReservation=vA0[i][1];
    if(vA0[i][50]!='.')
    {
      var B = vA0[i][1];//Sheet.getRange(i,2).getValue();
      var F = vA0[i][5];//Sheet.getRange(i,6).getValue();
      var E = vA0[i][4];//Sheet.getRange(i,5).getValue();
      var K = vA0[i][10];//Sheet.getRange(i,11).getValue();
      var L = vA0[i][11];//Sheet.getRange(i,12).getValue();
      var V = vA0[i][21];//Sheet.getRange(i,22).getValue();
      var O = vA0[i][14];//Sheet.getRange(i,15).getValue();
      var P = vA0[i][15];//Sheet.getRange(i,16).getValue();
      var Q = vA0[i][16];//Sheet.getRange(i,17).getValue();
      var AF = vA0[i][31];//Sheet.getRange(i,32).getValue();
      var AG = vA0[i][32];//Sheet.getRange(i,33).getValue();
      var N = vA0[i][13];//Sheet.getRange(i,14).getValue();
      var AI = vA0[i][34];//Sheet.getRange(i,35).getValue();
      var AB = vA0[i][27];//Sheet.getRange(i,28).getValue();
      var AC = vA0[i][28];//Sheet.getRange(i,29).getValue();   
      var array = ["",B,F,E,K,L,"",V,O,P,Q,AF,AG,"","",N,N,AI,"","",AB,AC,"","","","",TimeStamp];
      sh1.appendRow(array);
      sh0.getRange(i+1,51).setValue(".");
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提高我的脚本性能 Google Sheets 脚本 的相关文章

  • array_udiff_assoc() 和 array_diff_uassoc() 有什么区别?

    有什么区别array udiff assoc and array diff uassoc For array udiff assoc 我有这个代码 function myfunction v1 v2 if v1 v2 return 0 re
  • 对于双核手机,availableProcessors() 返回 1

    我最近购买了一部 Moto Atrix 2 手机 当我尝试查看手机中的处理器规格时 Runtime getRuntime availableProcessors 返回 1 proc cpuinfo 也仅包含有关处理器 0 的信息 出于好奇
  • .NET 中 UniqueQueue 和 UniqueReplacementQueue 集合最有效的实现

    考虑到入队和出队操作的速度同样重要 NET 中 UniqueQueue 和 UniqueReplacementQueue 集合最有效 就速度而言 的实现是什么 UniqueQueue是一个不可能出现重复的队列 因此 如果我将一个元素推送到队
  • 用于以两种方式提取特定值的 Google Sheets 公式

    我正在尝试使用 Google 中的电子表格做一些不同的事情 但我正在使用的公式遇到了一些问题 我希望有人能够指导我找到更好的解决方案或能够纠正我当前遇到的问题 首先 这是我从中提取的表 1 上的数据视图 Example Spreadshee
  • 如何在 Microsoft 报告中显示字节数组中的图像

    我使用报表文件和 ReportViewer 控件来显示在运行时从对象动态加载数据的报表 我需要显示一个以字节数组形式存储在对象中的图像 PictureBox 的值当前设置为 First Fields ImageData Value dtst
  • 这个 cProfile 结果告诉我需要修复什么?

    我想提高Python脚本的性能并且一直在使用cProfile生成性能报告 python m cProfile o chrX prof bgchr py args 我打开这个chrX prof使用 Python 的文件pstats并打印出统计
  • 创建动态多维对象/数组

    我正在尝试使用 JS 创建一个多维数组 以便我可以通过 Ajax 调用 PHP 来发布一些数据 这可能很简单 但我对 JS 的了解很少关于这个具体的事情 这是带有代码的 JSFiddle http jsfiddle net k5Q3p 我想
  • 有谁知道一种更快的方法来执行 String.Split() 吗?

    我正在读取 CSV 文件的每一行 并且需要获取每一列中的各个值 所以现在我只是使用 values line Split delimiter where line是保存由分隔符分隔的值的字符串 衡量我的表现ReadNextRow我注意到它花费
  • fetchsize和batchsize对Spark的影响

    我想通过以下方式控制 RDB 的读写速度Spark直接 但标题已经透露的相关参数似乎不起作用 我可以得出这样的结论吗fetchsize and batchsize我的测试方法不起作用 或者它们确实会影响阅读和写作方面 因为测量结果基于规模是
  • 3D 数组到 3D std::vector

    我在代码函数中用 3D std vector 替换了 3D 数组 它进入了无限循环 你能给我一个提示吗 我真的需要使用向量而不是数组 谢谢 我最初的代码是 arr is a 3D array of a sudoku table the 3
  • 如何获得n个具有不同元素数量的数组的所有可能组合?

    我有一些在编程时未知的数组数量 也许是 3 或 4 或 7 每个数组都有一些元素 即 a 1 2 3 4 b 6 7 5 2 1 c 22 4 6 8 4 8 5 4 d e f g 我想通过从每个数组中采样一个数字来获得所有可能的组合 例
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • 在 nHibernate 关系中使用实体的 Lite 版本?

    在某些情况下 出于性能原因 创建一个实体的轻量级版本 指向同一个表 但映射的列较少 这是一个好主意吗 例如 如果我有一个包含 50 列的联系人表 并且在一些相关实体中 我可能对 FirstName 和 LastName 属性感兴趣 那么创建
  • Fortran 子例程返回错误值

    嘿 我正在开发一个 Fortran 程序 遇到了一个奇怪的问题 当我尝试在调用特定子例程之前直接输出数组的某些值时 我得到了正确的值 然后 我尝试在启动子例程时输出同一数组的一些值 它们都是 0 我最终在子例程之后输出数组的值 并且这些值回
  • 确定数组的大小(如果传递给函数)

    如果将数组传递给另一个函数 未传递大小 是否可以确定数组的大小 数组的初始化类似于 int array XXX 我知道不可能执行 sizeof 因为它会返回指针的大小 我问的原因是因为我需要在传递数组的另一个函数内运行 for 循环 我尝试
  • 隐藏类以及 {} 对象与自定义构造函数之间的等效性 (v8)

    鉴于这篇文章 http richardartoul github io jekyll update 2015 04 26 hidden classes html http richardartoul github io jekyll upd
  • Java 11 中使用堆栈跟踪的速度明显慢于 Java 8

    我正在比较 JDK 8 和 11 的性能jmh https openjdk java net projects code tools jmh 1 21 当我遇到一些令人惊讶的数字时 Java version 1 8 0 192 vendor
  • 是否可以提高 Mongoexport 速度?

    我有一个 1 3 亿行的 MongoDB 3 6 2 0 集合 它有几个简单的字段和 2 个带有嵌套 JSON 文档的字段 数据以压缩格式 zlib 存储 我需要尽快将其中一个嵌入字段导出为 JSON 格式 然而 mongoexport 需
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换

随机推荐

  • 包含我导入的 jar 的名称是什么?

    我不认为这是重复的 我找不到我正在寻找的简单答案 在 Eclipse Juno 中 我想突出显示任何单个导入语句并找出哪个 jar 包含该包 类 这在 Eclipse 中可能吗 如果是这样 怎么办 EDIT 这个问题看起来很相似 但没有回答
  • 如何创建一个新的(空的!)“根”分支?

    I would like to define a new root branch in this git repository By root branch I mean a branch that is entirely independ
  • 当 N 位于 from 中时如何更新 N 行(从 @myVar 选择 N)

    我正在 SQL Server 2012 上开发这个存储过程 存储过程将更新Quantity行中EXTERNAL CODES表中的每一行 newBatches范围 这就像一个循环 我需要在其中创建一个新行BATCHES表中的每一行 newBa
  • SpriteKit SKScene 添加 AVCaptureVideoPreviewLayer CALayer 作为背景不起作用

    我正在尝试将 AVCaptureVideoPreviewLayer CALayer 添加为 SKScene 的背景 我可以将 CALayer 添加到场景中 但无论尝试如何排序 CALayer 始终是最顶层的对象 在 didMoveToVie
  • 将字符串附加到 Firebase 实时数据库上的列表 [重复]

    这个问题在这里已经有答案了 我想将一个字符串附加到 Firebase 实时数据库上的列表中 我的代码已经可以运行 但是有问题 所以数据库看起来像这样 message 0 some string 1 another string 2 some
  • 如何在没有身份验证的情况下打开我的应用程序 j hipster

    我创建了名为 Bookstore 的 j hipster 应用程序 运行我的应用程序后 它将进行身份验证 我不需要此身份验证 是否有任何方法可以在没有 j hipster 登录页面的情况下打开我的应用程序 在路径 app config 中有
  • Android Fragment 中的问题:仍然单击上一个片段

    我开发了一个应用程序 该应用程序具有导航抽屉和抽屉内的许多片段 因此当我在片段内打开片段时遇到问题 在一个片段中 当用户单击列表视图项时 他们会获取与列表项相关的数据 因此我面临问题它仍然单击不可见的列表 但单击 片段的布局
  • %<>%操作的含义

    这个操作有什么作用呢 test lt gt select name list 这是来自一个名为magrittr lt gt 意思是 取出左边的部分 用右边的部分修改它 覆盖左边的变量 如果你更熟悉dplyr 它相当于 test lt tes
  • AJAX 将 JavaScript 字符串数组发送到 JsonResult 作为 List 始终返回 Null?

    我正在尝试在 JavaScript 中构建一个字符串数组 并在操作方法的字符串列表中获取结果 下面是我的 JavaScript 的样子 我正在使用 jQuery 1 4 2 问题是我的操作方法中的列表始终显示 NULL JavaScript
  • 在当前时间上添加小时或分钟

    我想将时间增加到当前时间 例如 我有问题发生的时间和完成它们的预期时间 我怎样才能添加到它 DateTime Now ToShortDateString 您可以使用其他变量 DateTime otherDate DateTime Now A
  • 如何解决 AddJsonOptions 不包含 SerializerSettings 的定义 - .NET

    希望有人能帮助我 我一直在寻找 但未能找到解决方案 可能是一些基本的东西 我只是找不到解决方案 services AddMvc SetCompatibilityVersion CompatibilityVersion Version 2 1
  • 客户端检索 Google 联系人图片

    我正在使用 Google JavaScript API 在网络应用程序中获取 Google 联系人 并且我想检索他们的照片 我正在做这样的事情 大大简化 var token let s admit this is available alr
  • 在Windows中比较2个二进制文件的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个工具来比较两个二进制文件 文件相当大 我在互联网上找到的一些免费软件或试用工具不方便用于大文件
  • 将 NetCDF 转换为 GRIB2

    我知道有这样的软件wgrib2 http www cpc ncep noaa gov products wesley wgrib2 这会将文件转换为grib and grib2格式化为NetCDF文件 但我需要走另一条路 来自NetCDF
  • GNU FORTH 有编辑器吗?

    第 3 章开始前进 http www forth com starting forth says 现在您已经将一个块设置为 当前 您只需输入单词即可列出它L 不像LIST L不希望以块号开头 相反 它列出了当前块 当我跑步时180 LIST
  • Android Proguard - 保留所有第 3 方库是最佳实践吗?

    我正在为使用第 3 方库的应用程序配置 Proguard 包含以下行是否是 最佳实践 为了避免将来难以发现的错误 keep class 3rd party lib name 对于每个没有来自其开发人员的特定 Proguard 指令的第 3
  • 从 JQuery 中的元素获取点击处理程序

    如何获取对 JQuery 中元素的单击处理程序的引用 这是我正在尝试做的事情 存储点击处理程序 更改下一次单击的单击处理程序 恢复原始点击处理程序 var originalClick settings currentTarget click
  • 将多个前缀行过滤器设置为扫描仪 hbase java

    我想创建一台扫描仪 它可以为我提供带有 2 个前缀过滤器的结果例如 我想要其键以字符串 x 开头或以字符串 y 开头的所有行 目前我知道只能使用一个前缀 方法如下 scan setRowPrefixFilter prefixFiltet 在
  • 通过 URL 中的 ID 进行 RestKit 关系映射

    假设我有一个 APIusers 1 items返回一个列表items为了userID 为 1 假设API响应如下 items id 1 description Some item 请注意 响应不包含user id用于关系映射 RestKit
  • 提高我的脚本性能 Google Sheets 脚本

    我创建了一个函数 每当我运行 AppendRow 脚本时 AY 列中没有点 的每一行 包含我想要的每个信息 列的数组从该表将被转移到我的主表 其中有13k rows atm 通常 每天大约有 20 40 行被粘贴到第一个工作表中 此脚本会自