Google apps script 使用google脚本将多个CSV文件导入google工作表
我正在使用google脚本将CSV文件从web URL导入google工作表中的各个工作表。在导入新信息之前,我希望清除某些列的内容。在导入之前,我很难让脚本清除内容。我还曾在一张纸上包含一个CSV的一部分和另一个CSV的一部分。我想我需要在CSV文件之间的脚本中添加一些内容。我还需要添加一些东西,以便在导入之前清除内容。我不想只是清理表格,因为还有一些公式需要保留。我也不想使用GoogleImportData函数,因为它不可靠 以下是我当前的脚本(已删除URL):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): 要清除工作表的内容或工作表中
要清除工作表的内容或工作表中的一系列单元格,可以使用或,这将仅删除值并保留格式和公式 我注意到您的行
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]);
}
}