簡體   English   中英

JS / GAS:為使循環加快電子表格單元格的復制速度,將文檔占位符替換為值嗎?

[英]JS/GAS: For loop to speed up copy from spreadsheet cell, replace document placeholder with value?

我正在使用Google App腳本。 我有一個電子表格,其中包含有關供能源審計師訪問的建築物的問題。 要求審核員將他們對電子表格問題的答案放在某些單元格中。 然后他們可以使用我編寫的腳本來生成外觀更正式的Google文檔報告。 通過以下步驟生成報告:審核員將每個單元格輸入的答案輸入一個已定義的范圍。 例如,假設單元格B10在電子表格中定義為“ buildingAddress”。 要求審核員在該單元格中輸入建築物地址-假設他輸入“ Portland 55 Sample Drive”。 當審核員單擊生成文檔報告時,腳本將運行以下行:

var buildingAddress = sheet.getRangeByName('buildingAddress').getValue(); copyBody.replaceText("<buildingAddress>", buildingAddress);

我的(文檔文件)報告模板中的占位符為<buildingAddress> 因此,代碼在報告模板中找到了該代碼,並將其替換為“ 55 Sample Drive,Portland”(審計員在電子表格單元格中輸入的值)。

不幸的是,我需要從電子表格中提取很多這樣的單元格值,然后將其推送到報表文檔中的占位符。 它們都符合以下結構:

var buildingAddress = sheet.getRangeByName('buildingAddress').getValue(); 
  copyBody.replaceText("<buildingAddress>", buildingAddress);

所以,我想知道,我可以達到相同的結果,但是通過使用數組和for循環使用更少的代碼嗎? 假設數組看起來像這樣:

var array = ["buildingAddress", "buildingOwner", "auditorName"];

如何設置for循環???

謝謝!!!!!

除了更干凈的代碼,循環不會給您帶來完全相同的收益。

對其進行調試,看看最慢的部分在哪里(請參閱執行記錄或關鍵步驟上的日志)。

例如,如果按名稱獲取范圍緩慢,並且所有那些命名范圍都是連續的,則為這些單元格創建一個命名范圍。 獲取范圍(將返回數組)並從那里獲取值。 這會發出一個“獲取范圍”調用,而不是您現在擁有的N個調用。

從“如何編寫循環”問題開始,看來您才剛剛開始編程。 id建議使用一個教程,並進行更多的練習,因為stackoverflow假設您了解這些基礎知識。

謝謝! 如果有人感興趣,這對我有用。 我做了一個字符串對象數組。 每個字符串都是與電子表格中定義的范圍相同的文本。 然后我用這個for循環:

for(var i = 0; i < simpleCopyReplaceArray.length; i++){
var definedRangeCellName = simpleCopyReplaceArray[i];
var cellValue = ss.getRangeByName(definedRangeCellName).getValue();
var placeHolder = "<" + definedRangeCellName + ">";

if( cellValue != ""){
  copyBody.replaceText(placeHolder, cellValue);
}else{
  copyBody.replaceText(placeHolder, "");}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM