【问题标题】:Slow For-Loop (Apps Script)慢速 For-Loop(应用程序脚本)
【发布时间】:2022-06-14 11:13:36
【问题描述】:

我是新手,我很确定我没有在我的函数“importData”中正确设置 for 循环:

function urlsToSheets(){
    importData("https://hub.arcgis.com/datasets/d3cd48afaacd4913b923fd98c6591276_36.csv", "Pavement Condition");
    importData("https://hub.arcgis.com/datasets/lahub::tctmc-streets-of-significance-construction-impacted-streets.csv", "Streets of Significance");
    importData("https://geohub.lacity.org/datasets/lahub::one-year-moratorium-streets.csv", "One-Year Moratorium");
    importData("https://hub.arcgis.com/datasets/lahub::boe-permits-lines.csv", "BOE Permit Lines")
    importData("https://hub.arcgis.com/datasets/lahub::archived-boe-permits-lines.csv", "Archived BOE Permit Lines");
    importData("https://hub.arcgis.com/datasets/lahub::boe-permits-points.csv", "BOE Permit Points");
    importData("https://hub.arcgis.com/datasets/56318ef6ed6444d981977adf80157b87_5.csv","Archived BOE Permit Points");
}

function importData(url, sheetName){
    const file = UrlFetchApp.fetch(url);
    const csv = file.getBlob().getDataAsString();
    const csvData = csvToArray(csv);
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
    sheet.clear();
    for (let i = 0; i <= csvData.length; i++){
        sheet.getRange(1, 1, csvData.length, csvData[i].length).setValues(csvData);
    }
}

每个网址都有数千行;第一个 URL 有 85k 行数据。 csvData 需要 10 多分钟才能传输到其预期的工作表。

我做错了什么?我怎样才能更快地做到这一点?

谢谢!

【问题讨论】:

  • csvToArray 是什么?
  • 我用来清理 csv blob-turned-string 并将其转换为数组的另一个函数。

标签: for-loop google-apps-script


【解决方案1】:

不是为每一行设置数据,而是设置一个二维矩阵的值。您使用 SpeadsheetApp API 进行的交互越少,您的代码就越快。

我建议创建一个包含所有数据的数组。然后在单独的行中选择行并设置值(在 for 循环之外)。

【讨论】:

    【解决方案2】:

    谢谢大家!最简单的解决方案是将以下代码从 for 循环中取出,并使其成为自己的行。

    sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData)
    

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 2019-03-23
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 2020-01-31
      相关资源
      最近更新 更多