Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从CSV导入非常慢_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 从CSV导入非常慢

Google apps script 从CSV导入非常慢,google-apps-script,google-sheets,Google Apps Script,Google Sheets,当我将csv表导入到Google工作表时,我的脚本(见下文)非常慢。有人知道问题出在哪里吗 我已经在不同的账户上试过了 问候 function import_konto_kst_statistik_budget() { var fSource = DriveApp.getFolderById('1B2t86GVMoB4yilJ5ieWuGpxFYzsVm8bs'); // reports_folder_id = id of folder where csv reports are saved

当我将csv表导入到Google工作表时,我的脚本(见下文)非常慢。有人知道问题出在哪里吗

我已经在不同的账户上试过了

问候

function import_konto_kst_statistik_budget() {
  var fSource = DriveApp.getFolderById('1B2t86GVMoB4yilJ5ieWuGpxFYzsVm8bs'); // reports_folder_id = id of folder where csv reports are saved
  var fi = fSource.getFilesByName('konto_kst_statistik_budget.csv'); // latest report file
  var ss = SpreadsheetApp.getActive()
  var sheet = ss.getSheetByName('90_konto_kst_statistik_budget'); // Select Sheet Konto
  sheet.activate()  // aktiviert das Sheet Konto
  sheet.clear()  // löscht alle Inhalte auf Sheet Konto

  if ( fi.hasNext() ) { // proceed if "konto.csv" file exists in the reports folder
    var file = fi.next();
    var csv = file.getBlob().getDataAsString();
    csv = csv.replace(/'/g, '"');
    var csvData = CSVToArray(csv); // see below for CSVToArray function

    // loop through csv data array and insert (append) as rows into 'NEWDATA' sheet
    for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
      sheet.getRange(i + 1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
    }
  }
}
function import\u konto\u kst\u statistik\u budget(){
var fSource=DriveApp.getFolderById('1B2T86GVMOB4YILJ5IEWUGPXYZSVM8BS');//报告\文件夹\ id=csv报告保存文件夹的id
var fi=fSource.getFilesByName('konto_kst_statistik_budget.csv');//最新报告文件
var ss=SpreadsheetApp.getActive()
var sheet=ss.getSheetByName('90_konto_kst_statistik_budget');//选择sheet konto
sheet.activate()//aktiviert das sheet Konto
sheet.clear()//löscht alle Inhalte auf sheet Konto
如果(fi.hasNext()){//如果报告文件夹中存在“konto.csv”文件,则继续
var file=fi.next();
var csv=file.getBlob().getDataAsString();
csv=csv.replace(/“/g,”);
var csvData=CSVToArray(csv);//有关CSVToArray函数,请参见下文
//循环浏览csv数据数组,并作为行插入(追加)到“NEWDATA”工作表中

对于(var i=0,lenCsv=csvData.length;i由于以下循环,脚本速度较慢:

for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
      sheet.getRange(i + 1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
  }
原因:
使用setValues的写操作开销巨大,而且耗时较长,因此请尝试

编辑:

如果一次输入一行的原因是CSV数据中的列长度可变。我建议修改
CSVtoArray()
函数以返回具有统一列长度的数组由于此循环,您的脚本速度较慢:

for ( var i=0, lenCsv=csvData.length; i<lenCsv; i++ ) {
      sheet.getRange(i + 1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
  }
原因:
使用setValues的写操作开销巨大,而且耗时较长,因此请尝试

编辑:

如果每次输入一行的原因是CSV数据中的列长度可变。我建议修改
CSVtoArray()
函数返回具有统一列长度的数组

除非用于活动计算,否则传输速度并不重要。相关:除非用于活动计算,否则传输速度并不重要。相关:什么是
i
at
csvData[i].length
的更改?如果
CSVtoArray()
具有统一的列长度,是否是
0
而不是?它应该是csvData[0]。length,刚刚修改了它谢谢您的建议我收到了您的代码错误(抱歉是德语)“Falsche Bereichsbreite,war 4,sollte jedoch 1 sein.(Zeile 159,Datei“code”)Schlienßßen“使用google Translator翻译时,错误的区域宽度为4,但应为1。(第159行,文件“代码”)我认为,数组长度不相等。如果您查看电子表格,至少会写入第一行。您可以发布您的csvtoarray()吗?”函数和一个示例csv文件来验证是否相同。什么是
i
at
csvData[i]。更改的长度
?如果
CSVtoArray()
具有统一的列长度,它是
0
而不是吗?它应该是csvData[0]。长度,请修改它谢谢您的建议我收到了您的代码错误(对不起,是德语)“Falsche Bereichsbreite,war 4,sollte jedoch 1 sein.(Zeile 159,Datei“代码”)Schließen”用谷歌翻译器翻译,错误区域宽度为4,但应为1。(第159行,文件“代码”)Close我也这么认为,数组长度不相等。如果您查看电子表格,至少会将第一行写入。您是否可以发布您的csvtoarray()函数和示例csv文件来验证这一点。