Google apps script 如何将2个脚本正确合并为1个脚本?
亲爱的社区: 我在将两个单独的脚本合并为一个脚本时遇到困难。如果单独运行,两者都可以正常工作,但如果两者都存在于单个文件中,则不能正常工作。第一个脚本将CSV导入我的电子表格,并将其导入名为“导入”的临时工作表中。第二个脚本将“Imported”中的行导入名为“Main”的永久工作表,然后删除临时工作表 我曾尝试在同一个函数下合并两个脚本,但这只会作为输出“导入”工作表,而不会填充主工作表。如果我创建一个新函数,它首先调用函数import CSV,然后调用函数import to Main,也会发生同样的情况 对于CSV导入,我使用以下脚本,源于:Google apps script 如何将2个脚本正确合并为1个脚本?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,亲爱的社区: 我在将两个单独的脚本合并为一个脚本时遇到困难。如果单独运行,两者都可以正常工作,但如果两者都存在于单个文件中,则不能正常工作。第一个脚本将CSV导入我的电子表格,并将其导入名为“导入”的临时工作表中。第二个脚本将“Imported”中的行导入名为“Main”的永久工作表,然后删除临时工作表 我曾尝试在同一个函数下合并两个脚本,但这只会作为输出“导入”工作表,而不会填充主工作表。如果我创建一个新函数,它首先调用函数import CSV,然后调用函数import to Main,也会发
函数importsv(){
var fSource=DriveApp.getFolderById('folder_id_removed');
//reports\u folder\u id=保存csv报告的文件夹的id
var fi=fSource.getFilesByName('data.csv');
//最新报告文件
var ss=SpreadsheetApp.openById('spreadsheet_id_removed');
//data_sheet_id=电子表格的id,该电子表格保存要用新报告数据更新的数据
如果(fi.hasNext()){//如果报告文件夹中存在“report.csv”文件,则继续
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);//有关CSVToArray函数,请参见下文
var newsheet=ss.insertSheet('Imported');//创建一个'NEWDATA'表来存储导入的数据
//循环浏览csv数据数组,并作为行插入(追加)到“NEWDATA”工作表中
对于(var i=0,lenCsv=csvData.length;i@Egor p)-您不能以这种方式完全组合两个脚本。如果两个工作表位于同一个电子表格上,您应该能够从新项目运行第二个函数:File>new>project
您可以将第二个函数设置为onEdit(e)而不是importRows(),这意味着从CSV导入完成后,它应该已经复制到永久工作表中
希望这有帮助!试试这个:
function importCSV() {
var fSource=DriveApp.getFolderById('folder_id_removed');
var fi=fSource.getFilesByName('data.csv');
var ss=SpreadsheetApp.openById('spreadsheet_id_removed');
if (fi.hasNext()) {
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);
var tsh=ss.getSheetByName('Main');
for (var i=1;i<csvData.length;i++) {
tsh.appendRow(csvData[i]);
}
}
}
函数importsv(){
var fSource=DriveApp.getFolderById('folder_id_removed');
var fi=fSource.getFilesByName('data.csv');
var ss=SpreadsheetApp.openById('spreadsheet_id_removed');
如果(fi.hasNext()){
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);
var tsh=ss.getSheetByName('Main');
对于(var i=1;我想问你一个具体的问题吗?如果我没有正确指定问题,我深表歉意,但是你下面的回答为我解决了这个问题,谢谢!
function importRows() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Imported');
var des=ss.getSheetByName('Main');
var src=sh.getRange('A2:F500');
var vA=src.getValues();
for(var i=0;i<vA.length;i++) {
if(vA[i].join("")) {
des.appendRow(vA[i]);
}
}
ss.deleteSheet(sh)
}
function importCSV() {
var fSource=DriveApp.getFolderById('folder_id_removed');
var fi=fSource.getFilesByName('data.csv');
var ss=SpreadsheetApp.openById('spreadsheet_id_removed');
if (fi.hasNext()) {
var file=fi.next();
var csv=file.getBlob().getDataAsString();
var csvData=CSVToArray(csv);
var tsh=ss.getSheetByName('Main');
for (var i=1;i<csvData.length;i++) {
tsh.appendRow(csvData[i]);
}
}
}