Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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

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 使用google脚本将多个CSV文件导入google工作表_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用google脚本将多个CSV文件导入google工作表

Google apps script 使用google脚本将多个CSV文件导入google工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在使用google脚本将CSV文件从web URL导入google工作表中的各个工作表。在导入新信息之前,我希望清除某些列的内容。在导入之前,我很难让脚本清除内容。我还曾在一张纸上包含一个CSV的一部分和另一个CSV的一部分。我想我需要在CSV文件之间的脚本中添加一些内容。我还需要添加一些东西,以便在导入之前清除内容。我不想只是清理表格,因为还有一些公式需要保留。我也不想使用GoogleImportData函数,因为它不可靠 以下是我当前的脚本(已删除URL): 要清除工作表的内容或工作表中

我正在使用google脚本将CSV文件从web URL导入google工作表中的各个工作表。在导入新信息之前,我希望清除某些列的内容。在导入之前,我很难让脚本清除内容。我还曾在一张纸上包含一个CSV的一部分和另一个CSV的一部分。我想我需要在CSV文件之间的脚本中添加一些内容。我还需要添加一些东西,以便在导入之前清除内容。我不想只是清理表格,因为还有一些公式需要保留。我也不想使用GoogleImportData函数,因为它不可靠

以下是我当前的脚本(已删除URL):


要清除工作表的内容或工作表中的一系列单元格,可以使用或,这将仅删除值并保留格式和公式

我注意到您的行
var ss=SpreadsheetApp.openByUrl('spreadsheeturlhere')在随后重新声明
ss
变量时不执行任何操作。如果脚本绑定到电子表格,则不需要此行,因为对
getActive()
&
getActiveSheet()
的调用将提供对主机电子表格的引用。您对
SpreadsheetApp.getActive().getSheetByName()
的调用将返回对主机电子表格的引用,而不是您通过URL打开的电子表格

<>我也会考虑改变你的函数,把CSV源URL、表名和单元格锚作为参数,这样代码就更容易维护。e、 g

function importCSVFromWeb(csvUrl, sheetName, dataAnchor) {
  /* csvUrl:     the CSV source URL
     sheetName:  the name of the sheet to add the data
     dataAnchor: the cell origin for the range.setValues() call as an array 
                 i.e. dataAnchor = [row, col]
  */
  var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
  var csvData = Utilities.parseCsv(csvContent);
  var ss = SpreadsheetApp.getActive();
  // note that you'll need to pass in a name for each sheet, 
  //   including the first one where you used SpreadsheetApp().getActiveSheet() previously
  var sheet = ss.getSheetByName(sheetName);
  sheet.getRange(dataAnchor[0], dataAnchor[1], csvData.length, csvData[0].length).setValues(csvData);
}

function feedCSVImport(){
  var urls_sheets_list = [["csv_source_url_1", "Sheet1", [1,1]],
                          ["csv_source_url_2", "RentPaid", [3,3]],
                          ["csv_source_url_3", "Tenants", [1,2]],
                          ["csv_source_url_4", "Owners", [1,1]]
                         ];
  for(var i = 0, lim = url_sheets_list.length; i < lim; ++i){
    importCSVFromWeb(url_sheets_list[i][0], url_sheets_list[i][1], url_sheets_list[i][2]);
  }
}
函数导入CsvFromWeb(csvUrl、sheetName、dataAnchor){
/*csvUrl:CSV源URL
sheetName:要添加数据的图纸的名称
dataAnchor:range.setValues()调用作为数组的单元格原点
i、 e.数据锚=[行,列]
*/
var csvContent=UrlFetchApp.fetch(csvUrl.getContentText();
var csvData=Utilities.parseCsv(csvContent);
var ss=SpreadsheetApp.getActive();
//请注意,您需要为每张图纸输入一个名称,
//包括之前使用SpreadsheetApp().getActiveSheet()的第一个
var sheet=ss.getSheetByName(sheetName);
sheet.getRange(dataAnchor[0],dataAnchor[1],csvData.length,csvData[0].length).setValues(csvData);
}
函数feedCSVImport(){
变量url_sheets_list=[[“csv_source_url_1”、“Sheet1”、[1,1]],
[“csv_来源_url_2”,“租金已付”,[3,3]],
[“csv_来源_url_3”,“租户”[1,2]],
[“csv_来源_url_4”,“所有者”,[1,1]]
];
对于(变量i=0,lim=url\u sheets\u list.length;i
谢谢。我正在实现这些更改,并得到以下错误:“TypeError:无法从未定义的文件中读取属性“0”。“第23行,文件“代码”)“第23行是:ImportCvFromWeb(url_sheets_list.length[I][0]、url_sheets_list.length[I][1]、url_sheets_list.length[I][2]);“对不起,”罗布说。我已经修复了示例中的拼写错误。这并不漂亮,但它旨在展示一种解决问题的方法。这非常有效,感谢Dean Ransevycz的帮助。如果要合并range.clearContent(),如何将其添加到参数中,以便在输入新内容之前清除范围?如果要清除所有工作表中的数据,则无需添加新参数。我只想添加一个布尔参数,如果你想在粘贴数据之前标记特定的数据表,你可以根据它调用<代码> CultCracTeNe()/<代码>方法。请看一下
工作表
类(),特别是
getLastRow()
&
getLastColumn()
方法。试着解决这个问题&如果你被卡住了,再问另一个问题。
function importCSVFromWeb(csvUrl, sheetName, dataAnchor) {
  /* csvUrl:     the CSV source URL
     sheetName:  the name of the sheet to add the data
     dataAnchor: the cell origin for the range.setValues() call as an array 
                 i.e. dataAnchor = [row, col]
  */
  var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
  var csvData = Utilities.parseCsv(csvContent);
  var ss = SpreadsheetApp.getActive();
  // note that you'll need to pass in a name for each sheet, 
  //   including the first one where you used SpreadsheetApp().getActiveSheet() previously
  var sheet = ss.getSheetByName(sheetName);
  sheet.getRange(dataAnchor[0], dataAnchor[1], csvData.length, csvData[0].length).setValues(csvData);
}

function feedCSVImport(){
  var urls_sheets_list = [["csv_source_url_1", "Sheet1", [1,1]],
                          ["csv_source_url_2", "RentPaid", [3,3]],
                          ["csv_source_url_3", "Tenants", [1,2]],
                          ["csv_source_url_4", "Owners", [1,1]]
                         ];
  for(var i = 0, lim = url_sheets_list.length; i < lim; ++i){
    importCSVFromWeb(url_sheets_list[i][0], url_sheets_list[i][1], url_sheets_list[i][2]);
  }
}