代码运行速度太慢

2023-11-29

我正在尝试运行一段代码,将值从一个电子表格复制到另一个电子表格,但是顺序不同(很难使其成为数组)。在某些情况下,它还会打印“未知”,在某些情况下,它还会格式化某些单元格。然而,这需要很长时间才能完成。有办法改善吗?

function move() {

  var sss = SpreadsheetApp.openById('xx');
  var sourceSheet = sss.getSheetByName('CJ_Products');
  var destinationSheet = sss.getSheetByName('Product2');

  var lastRow = sourceSheet.getRange(sourceSheet.getLastRow(), 1,1,1).getRow()

  var i = 1

  while(i<=lastRow){
  var rowInt = destinationSheet.getRange(destinationSheet.getLastRow()+1, 4,1,1).getRow() //get row number
  destinationSheet.getRange('A' + rowInt).setFormula('=Month(D'+rowInt+')')
  destinationSheet.getRange('B' + rowInt).setFormula('=Weekday(D'+rowInt+')')
  destinationSheet.getRange('C' + rowInt).setFormula('=Day(D'+rowInt+')')
  destinationSheet.getRange('D' + rowInt).setValue(sourceSheet.getRange('A'+i).getValues()) //move from the source to destination
  destinationSheet.getRange('E' + rowInt+':F'+rowInt).setValue('Unknown') //set to Unknown
  destinationSheet.getRange('H' + rowInt+':J'+rowInt).setValue('Unknown')
  destinationSheet.getRange('J' + rowInt).setValue('CJ')
  destinationSheet.getRange('K' + rowInt).setValue(sourceSheet.getRange('B' +i).getValues())
  destinationSheet.getRange('L' + rowInt).setValue(sourceSheet.getRange('E' +i).getValues())
  destinationSheet.getRange('M' + rowInt).setValue(sourceSheet.getRange('F' +i).getValues())
  destinationSheet.getRange('N' + rowInt).setValue(sourceSheet.getRange('J' +i).getValues())
  destinationSheet.getRange('S' + rowInt).setValue(sourceSheet.getRange('G' +i).getValues())
  destinationSheet.getRange('T' + rowInt).setValue(sourceSheet.getRange('H' +i).getValues())
  destinationSheet.getRange('O' + rowInt).setFormula('=S'+rowInt+'*GOOGLEFINANCE("currency:EURUSD")')
  destinationSheet.getRange('P' + rowInt).setFormula('=T'+rowInt+'*GOOGLEFINANCE("currency:EURUSD")')
  destinationSheet.getRange('Q' + rowInt).setFormula('=P'+rowInt+'/T'+rowInt)
  destinationSheet.getRange('O' + rowInt+':Q'+rowInt).setNumberFormat('0.00$')

  i = i+1
  }
  }

代码需要优化:

  1. 您在循环中进行所有计算
  2. You use getValue and setValue而不是更快的函数getValues, setValues

相反,您的循环集中执行一次调用:

var rowInt = destinationSheet.getRange(destinationSheet.getLastRow()+1, 4,1,1).getRow()

尝试找出如何找到循环外的第一行,然后增加该值:

var rowStart = destinationSheet.getRange(destinationSheet.getLastRow()+1, 4,1,1).getRow();

for (var row = rowStart; row <= lastRow, row++)
{
  // some code...
}

使用数组,然后将值从数组复制到范围中:

var formulas = [];

for (var row = rowStart; row <= lastRow, row++)
{
  // some code...
  formulas.push(['=Month(D'+ row + ')']);
}
var rangeToPateFormulas = destinationSheet.getRange('A' + rowStart + ':A' + lastRow);
rangeToPateFormulas.setFormulas(formulas);

等等。查看更多信息:

https://developers.google.com/apps-script/reference/spreadsheet/range

https://developers.google.com/apps-script/guides/support/best-practices

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

代码运行速度太慢 的相关文章

  • 如何在 Yarn 中使用多个 npm 注册表?

    我正在尝试在我们的环境中设置 Yarn 0 17 9 但我的注册表有问题 我们目前使用两个注册中心 官方 npmjs 和我们自己的内部网络注册中心 Sinopia 问题是我们正在使用内部工具通过 registry 标志从一个或另一个中提取软
  • 如何将选定的元素从 devTools 页面发送到 chrome 侧边栏页面

    我正在开发 chrome devTools 扩展 基本上 我在 元素 面板中添加了一个侧边栏窗格 开发工具 js chrome devtools panels elements createSidebarPane ChromeTrast f
  • Javascript 闭包 - 变量范围问题

    我正在阅读 Mozilla 开发者网站上有关闭包的内容 我注意到在他们的常见错误示例中 他们有以下代码 p Helpful notes will appear here p p E mail p
  • React hooks 状态变量在重新渲染后未更新

    在下面的示例中 我有一个想要更新的元素 水果 数组 并使用更新后的数组执行其他操作 在本例中保存更新后的列表 我的理解是重新渲染状态将更新 但它不在这里 或者状态更新和我的操作之间存在延迟 In the addFruit功能我可以看到 Pe
  • Javascript“this”在 IE 中丢失上下文

    以下在 firefox safari chrome 中工作正常 在 IE 中 this 似乎在 handleEvent 函数中丢失上下文 警报的结果是 object Window 这不是我想要的 当从handleEvent 输出时 this
  • 如何从 javascript 错误对象读取错误消息

    有人可以帮我解决以下问题吗 我正在通过 redux 操作进行后调用 如下所示 export const addEmployee firstName surname contactNumber email gt async dispatch
  • D3更新circle-pack数据新节点与现有节点重叠

    我正在关注一般更新模式 http bl ocks org mbostock 3808234但在分层方面存在问题 使用圆形包装布局 我pack新数据 update enter and exit圆形元素 然而 当新元素enter 它们重叠upd
  • 从电子表格脚本中调用 Web 应用程序脚本?

    如何从 Google 电子表格容器中的脚本调用外部 Google Web App 脚本 我有许多动态创建的电子表格 并希望它们全部调用一个 Web 应用程序 以实现一致性和易于维护 看看这篇博文 触发主从电子表格之间的更新 http www
  • 每n秒执行一次函数

    我制作了这个在 10 秒后点击链接的代码片段 function timeout window setTimeout function img left click 1000 setTimeout timeout 1000 timeout 我
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • jslint 配置 |传递全局变量

    我如何提醒 jshint 我有全局变量 即命名它们 我知道你可以做到这一点 但我不记得语法了 我在这里定义了一个全局的 function window glob1 local var 稍后像这样使用 不同的 IIFE function gl
  • vuejs 模板和 asp.net 部分视图,好的做法吗?

    我在网站中使用 Vue js 并将模板添加到 html 代码中 并将 js 代码添加到单个 js 文件中 所以我不想使用 vue Vuefy Browserfy 方法 而是稍后捆绑并缩小我的 js 文件 由于我必须使用 Asp Net MV
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 在 Chrome 开发者工具中禁用调试器语句

    我正在尝试对恶意 JavaScript 进行逆向工程 当我最初加载侧面时 会注入 JS 代码 其中包括 debugger 语句并将断点注入我的 chrome 开发人员控制台 通过stackoverflow阅读 禁用所有断点does not帮
  • 使用 nockjs 和 jest 进行 Promise/异步单元测试的代码覆盖率问题

    我使用 NockJS 和 Jest 为 React 应用程序编写了一个简单的 API 调用单元测试 如下所示 AjaxService js export const AjaxService post url data headers gt
  • 如何使用 Javascript 在 html 文件中搜索字符串?

    我有 5 个 html 文件 并且有一个搜索表单 我想用它来搜索这些 html 文件中的文本
  • 从请求url获取hash参数

    我有这样的网址 http www coolsite com daily plan id 1 http www coolsite com daily plan id 1解析该字符串并读取哈希值 id 之后的值 的最简单方法是什么 谢谢 在客户
  • 在 Meteor 应用程序中实现 MongoDB 2.4 的全文搜索

    我正在考虑向 Meteor 应用程序添加全文搜索 我知道 MongoDB 现在支持此功能 但我对实现有一些疑问 启用文本搜索功能的最佳方法是什么 textSearchEnabled true 在 Meteor 应用程序中 有没有办法添加索引
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • 如何从 Cloud Functions for Firebase 文件夹读取证书文件

    我正在尝试读取 certs 文件夹下的文件 如下所示 functions certs idp public cert perm 这是我用来读取文件的代码 fs readFileSync path join dirname certs idp

随机推荐

  • xcopy 文件、重命名、抑制“xxx 是否指定文件名...”消息

    这看起来很简单 也许我只是忽略了适当的旗帜 但是我如何在一个命令中将文件从一个目录复制到另一个目录并在目标目录中重命名 这是我的命令 if exist bin development whee config example if not e
  • MYSQL ORDER BY CASE 问题

    我有一个这样的数据库 id one id two timestamp one timestamp two 27 35 9 30 NULL
  • JDBC/Connectorj:了解连接池

    我想我需要更好地理解连接池的概念 我正在使用 ConnectorJ 使用 java 进行工作 并将 servlet 部署在 Apache Tomcat 服务器上 我一直在关注文档 所以我的 Tomcat context xml 如下所示
  • Rails 中 -%> 和 %> 之间的区别[重复]

    这个问题在这里已经有答案了 我已经开始了一些 Rails 教程 并注意到一些视图代码块就像 h1 h1 其他代码块就像 h1 h1 gt 和 gt 有什么区别 如果您知道一些好的语法参考 可以给我指出 这也会很有帮助 额外的破折号使得 ER
  • 如何在 Node js 中发送 POST 请求内容类型为 application/octet-stream 的文件

    我正在尝试将一些内容上传到 Facebook 的服务器 他们的官方文件指出 使用对话框中的令牌 您可以向我们的 Graph API 提交以下调用以提交您的 zip 请注意 我们正在使用视频子域 但这是故意的 因为该 URL 被配置为接收更大
  • 为什么尝试将 Grape 与 Rails 一起使用会因“未初始化常量 API”而失败?

    我希望有人解释一下为什么在 Rails 4 1 8 和 Grape 0 10 1 中会发生这种情况 这是我的 API app api root rb module API class Root lt Grape API prefix api
  • 使用 .pth 文件

    我正在尝试使模块在我没有全局写入权限的系统上可发现site packages目录 并且不改变环境 PYTHONPATH 我试图放置一个 pth文件与我正在执行的脚本位于同一目录中 但它似乎被忽略 例如 我创建了一个文件extras pth包
  • 使用 Maven 构建完整的应用程序文件夹

    大多数 Java 独立应用程序在部署到生产环境后最终都会出现在如下所示的文件夹中 myapp gt lib here lay all dependencies gt config here lay all the config files
  • 在 JavaScript 中将十六进制转换为浮点数

    我想将带有分数的以 10 为底的数字转换为以 16 为底的数字 var myno 28 5 var convno myno toString 16 alert convno 那里一切都很好 现在我想将其转换回十进制 但现在我不能写 var
  • 使用 Jetpack 的 Android 导航组件销毁/重新创建的片段

    我正在尝试实施使用 Jetpack 架构组件进行导航在我现有的应用程序中 我有一个活动应用程序 其中主要片段 ListFragment 是一个项目列表 目前 当用户点击列表项时 第二个片段将添加到堆栈中fragmentTransaction
  • 如何在 Android 中实现“Lettrine”渲染?

    我有一个小问题 如何在 Android 中实现 Lettrine 删除首字母大写字母 渲染 我的意思是 一个自动渲染 lettrine 的小部件 这是我正在寻找的示例 我很确定没有 简单的方法 可以做到这一点 但如果有的话可以帮助 欢迎所有
  • ARM BLX 指令范围(绝对)

    我有一个关于 ARM BLX 指令的问题 特别是关于 BLX RX 指令的问题 ARM手册上规定 对于BLX标签 标签应在32MB范围内 在我的代码中 我将 R0 寄存器设置为指向地址 1 我当前的地址和address1 目标地址 之间的距
  • 适用于armv7和arm64的Theos

    我正在尝试让 theos 在 OSX Mavericks 上工作 我最近购买了一部 iPhone 5s 并从那时起对其进行了越狱 现在我正在尝试让 Theos 工作 这样我就可以再次开始进行一些调整 我让它在 OSX Lion 以及 IOS
  • 将日期设置为从今天起 7 个工作日(不包括周末和公众假期)

    我尝试将日期设置为从今天算起 7 个工作日 不包括周末和英国公共假期 我首先将默认日期设置为今天的日期 todaysDate 7 天 todayPlusSevenDays 然后我计算todaysDate 和todayPlusSevenDay
  • 从 http 响应中保存角度文件

    我想知道如何以角度保存服务器响应中包含的文件 以便响应到达时自动下载文件 Edit 我有一个 http post 方法 我在响应中获取 pdf 数据 成功后 我想将响应数据保存为 pdf 文件 E g http method POST ur
  • 我需要一个快速的运行时表达式解析器

    我需要找到一个快速 轻量级的表达式解析器 理想情况下 我想向它传递一个名称 值对列表 例如变量 和一个包含要评估的表达式的字符串 我需要从中返回的只是一个真 假值 表达式的类型应遵循以下原则 varA xyz and varB 123 基本
  • 地图 V2 myLocation 蓝点回调

    我希望能够单击地图上显示的蓝点 我的位置 无论如何可以从该点击中获得回调吗 谢谢 马丁 一种可能的解决方法可能是绘制一个Marker 带有类似的图标 位于 我的位置 点的顶部 以便您可以收到相应的信息onMarkerClick 打回来 这还
  • C/C++ 将signed char 打包成int

    我需要将四个有符号字节打包为 32 位整数类型 这就是我想到的 int32 t byte int8 t c return unsigned char c int pack char c0 char c1 return byte c0 byt
  • htmlentities() 使汉字无法使用

    我们有一个 Web 应用程序 允许用户在文本区域中输入自己的 html 我们将该数据保存到我们的数据库中 当我们将html数据加载到文本区域时 当然 我们在将html数据扔到文本区域之前使用htmlentities 否则 用户可以在文本区域
  • 代码运行速度太慢

    我正在尝试运行一段代码 将值从一个电子表格复制到另一个电子表格 但是顺序不同 很难使其成为数组 在某些情况下 它还会打印 未知 在某些情况下 它还会格式化某些单元格 然而 这需要很长时间才能完成 有办法改善吗 function move v