- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何减少在 forloop 中使用 setValues() 和 copyto() 的谷歌应用程序脚本的运行时间
我找到一些代码并修改它
用于复制格式复制和粘贴
我不知道为什么使用它 setValues() 和 CopyTo() 但它工作..
我认为问题是 forloop 中的某个类。
但,
在这种情况下,我不知道如何从 forloop 中分离 setValues(),copyto()
它运行良好,但在 forloop 中通过 setValues() 花费很多时间
我如何将它与 forloop 分开以加快速度
function Duplicate_Format() {
const SS = SpreadsheetApp.getActiveSpreadsheet();
const Source_NotationRange = "B6:B47";
const Target_Sheet = SS.getSheets();
const Source_Data_sheet = SpreadsheetApp.getActive().getSheetByName('01.01');
const Source_Data_Range = Source_Data_sheet.getRange(Source_NotationRange);
var Location_First = 4;
var Location_Quantity = 366;
const Location_Last = Location_First + Location_Quantity -1;
for( let j = Location_First ; j <= Location_Last; j++){
var Target_Sheets = Target_Sheet[j];
var Target_Range = Target_Sheets.getRange(Source_NotationRange);
Target_Range.setValues(Source_Data_Range.getValues());
Source_Data_Range.copyTo(Target_Range, {formatOnly:true});
}
}
最佳答案
我相信你的目标如下。
function Duplicate_Format() {
const SS = SpreadsheetApp.getActiveSpreadsheet();
const Source_NotationRange = "B6:B47";
const Target_Sheet = SS.getSheets();
const Source_Data_sheet = SpreadsheetApp.getActive().getSheetByName('01.01');
const Source_Data_Range = Source_Data_sheet.getRange(Source_NotationRange);
var Location_First = 4;
var Location_Quantity = 366;
const Location_Last = Location_First + Location_Quantity -1;
// I modified below script.
// 1. Create the request body for the CopyPasteRequest of the method of batchUpdate in Sheets API.
var requests = [];
var srcStartRow = Source_Data_Range.getRow() - 1;
var srcEndRow = srcStartRow + Source_Data_Range.getNumRows();
var srcStartCol = Source_Data_Range.getColumn() - 1;
var srcEndCol = srcStartCol + Source_Data_Range.getNumColumns();
for( let j = Location_First ; j <= Location_Last; j++){
var Target_Sheets = Target_Sheet[j];
var Target_Range = Target_Sheets.getRange(Source_NotationRange);
var dstStartRow = Target_Range.getRow() - 1;
var dstEndRow = dstStartRow + Target_Range.getNumRows();
var dstStartCol = Target_Range.getColumn() - 1;
var dstEndCol = dstStartCol + Target_Range.getNumColumns();
requests.push({
copyPaste:{
source:{sheetId:Source_Data_sheet.getSheetId(),startRowIndex:srcStartRow,endRowIndex:srcEndRow,startColumnIndex:srcStartCol,endColumnIndex:srcEndCol},
destination:{sheetId:Target_Sheets.getSheetId(),startRowIndex:dstStartRow,endRowIndex:dstEndRow,startColumnIndex:dstStartCol,endColumnIndex:dstEndCol},
pasteType:"PASTE_NORMAL"
}
});
}
// 2. Request to Sheets API using the created request body.
var res = Sheets.Spreadsheets.batchUpdate({requests: requests}, SS.getId());
}
引用:
关于google-apps-script - 如何减少在 for 循环中使用 setValues() 和 copyto() 的谷歌应用程序脚本的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62826505/
我正在尝试将一个范围从一张纸复制到另一张纸(同时保留公式)。我使用 copyTo 编写了一个简单的脚本: function copyRangeAcrossSheets(source_sheet,sou
我想将文件 c:\a1\b2\c3\foo.txt 复制到 d:\a1\b2\c3\foo.txt。 D 驱动器上不存在子目录,如果我尝试直接执行 CopyTo(),则会出现 IO 异常。我一直没能找
我有以下方法,但出于某种原因,第一次调用 Copy to 似乎什么也没做?有人知道为什么吗?该方法的输入被压缩,如果需要,base64 可以提供该方法。 private byte[] GetFileC
我想知道在 C# 或 VB.NET 中如何使用 ArrayList 的 CopyTo 方法> 对象将其内容复制到其他 ArrayList(不是简单的数组)。 注意:我不是在寻找像 ArrayList
谁能解释为什么这段代码的输出只是“hello”以及这段代码的含义? ( 0, characterArray, 0, characterArray.Length ); 输出显示: The charact
我有一个 WCF 服务,它允许我以 block 的形式上传文件。我想知道的是,这段代码是否会导致上传的流在任何情况下都只能部分附加到目标流? 我的日志显示所有发送的流都是 512000 字节(这是我在
我如何使用 Stream CopyTo不覆盖现有输出文件的方法? public void MergeAndDeleteFiles(string outputFile, IEnumerable inpu
考虑以下代码: var results = searcher.FindAll(); SearchResult[] srList = new SearchResult[results.Count]; r
我快要失去理智了。在过去的一个小时里,我一直试图让 GzipStream 压缩一个字符串,但出于某种原因,它拒绝将整个字节数组写入内存流。起初我认为它与 using 语句有关,但即使在删除它们之后似乎
我正在使用 Java CIFS Client Library但面临的问题是 copyTo 函数不起作用。我有一个包含文件的文件夹。我想将这些文件读取到其他网络路径。 String path1 = "
我有下表: writing_agent_number|agent_name |individual_sub_name -------------------- --------------
我正在尝试将较小的图像复制到较大图像的中心。这是代码: src.copyTo(dest(Rect(50,50,src.cols,src.rows))); src 和 dest 都是 Mats,dest
我尝试过在这个论坛上搜索、阅读文档和谷歌搜索。我找不到问题的答案。 下面简要介绍一下我正在尝试做的事情: 从网络摄像头读取Mat对象frame(在父类OpenCVVideoWorker中声明为私有(p
我正在尝试通过 C++ 在 OpenCV 2.4 中使用蒙版,将较小的图像粘贴到较大的图像中。 在没有 mask 的情况下,我使用以下代码将小图像复制到大图像: smallImage.copyTo(l
我想使用 openCv 的 copyTo() 函数对图像应用蒙版,但蒙版不起作用。我仍然获得相同的图像。 当我在网上搜索时,我看到了一些建议,例如: -源图像和目标图像必须不同, -源图像必须具有 C
TiffBitmapDecoder decoder = new TiffBitmapDecoder(imageStreamSource, BitmapCreateOptions.PreservePix
我正在比较 OpenCL UMat 和 OpenCL Mat,我运行了 cvtColor() 函数 500 次。 int OpenCL_UMat() { Mat img; UMat u
我想合并 2 个大文件但是 atm 我的代码只在复制 1 个文件后更新进度有没有更好的方法来报告进度这是我的复制代码 atm max = files.Count; MessageBox.Show(
我在将数据从 MemoryStream 复制到 ZipArchive 内的 Stream 时遇到问题。以下内容不起作用 - 它仅返回 114 个字节: GetDataAsByteArray(IData
我看到CopyToAsync有 CancellationToken论据。但我不需要CopyToAsync因为我的代码已经在后台线程中执行了。我只想拥有CopyTo重载需要 CancellationTo
我是一名优秀的程序员,十分优秀!