Csv google工作表脚本编辑器导入多个工作表 客观的

Csv google工作表脚本编辑器导入多个工作表 客观的,csv,google-apps-script,google-sheets,Csv,Google Apps Script,Google Sheets,我正在尝试使用谷歌脚本编辑器将谷歌硬盘上的csv文件导入我的谷歌工作表。有人能向我澄清我对脚本的误解,以及我需要调整什么,以允许我将多个工作表请求粘贴到下面吗?抱歉,如果这是直截了当的,这是我第一次使用脚本编辑器,我不太熟悉这些 问题 目前,我的代码只填充1张数据表。与将第二部分视为下一张我想要填充的图纸不同,使用不同的csv图纸ID 我试过的 将变量更改为更独特的,以使工作表将我的变量视为不同的,因为我认为它每次都在擦除 查看其他在线帮助论坛,但没有找到什么 我也能理解 现行代码 开启功能

我正在尝试使用谷歌脚本编辑器将谷歌硬盘上的csv文件导入我的谷歌工作表。有人能向我澄清我对脚本的误解,以及我需要调整什么,以允许我将多个工作表请求粘贴到下面吗?抱歉,如果这是直截了当的,这是我第一次使用脚本编辑器,我不太熟悉这些

问题 目前,我的代码只填充1张数据表。与将第二部分视为下一张我想要填充的图纸不同,使用不同的csv图纸ID

我试过的
  • 将变量更改为更独特的,以使工作表将我的变量视为不同的,因为我认为它每次都在擦除
  • 查看其他在线帮助论坛,但没有找到什么 我也能理解
现行代码
开启功能(e){
SpreadsheetApp.getUi()
.createMenu(“刷新数据”)
.addItem('Run getCSV','getCSV')
.addToUi()
}
函数getCSV(){
//在“”中的getFileByID中输入您的CSV文件ID
var file=DriveApp.getFileById(“”);
var csvFile=file.getBlob().getDataAsString();
var csvData=Utilities.parseCsv(csvFile);
//将工作表名称更改为工作表的名称
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”);
sheet.clear();
sheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
}
函数getCSV(){
//在“”中的getFileByID中输入您的CSV文件ID
var file=DriveApp.getFileById(“”);
var csvFile=file.getBlob().getDataAsString();
var csvData=Utilities.parseCsv(csvFile);
//将工作表名称更改为工作表的名称
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet2”);
sheet.clear();
sheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
}
您定义了两次
getCSV()
,这将导致问题。函数名和变量一样,应该是唯一的。否则,它们将被重写

以两个
test()
函数为例。每次运行
testAll()
,输出总是2

function testAll() {
  test(); // 2.0
  test(); // 2.0
}

function test() {
  Logger.log(1);
}

function test() {
  Logger.log(2);
}
您可以做的是修改
getCSV()
,以便它接受输入,然后创建一个新函数,将数据传递给它。然后调用菜单中的新函数

/**
 * Add a custom menu to the spreadsheet.
 */
function onOpen(e) {
  SpreadsheetApp.getUi()
  .createMenu("RefreshData")
  .addItem("Get CSVs", "importSheets")
  .addToUi();
}

/**
 * Imports all CSV files.
 */
function getCSVs() {
  // Define the CSV files and where you want them to be saved
  var csvs = [
    { fileId: "FILE_ID_1", sheetName: "Sheet1" },
    { fileId: "FILE_ID_2", sheetName: "Sheet2" }
  ];

  // Import the CSVs
  for (var i = 0; i < csvs.length; i++) {
    getCSV_(csvs[i].fileId, csvs[i].sheetName);
  }
}

/**
 * Get the CSV data from a specified file and import into the desired
 * sheet of the active spreadsheet.
 * @param {String} fileId - The file ID of the CSV file
 * @param {String} sheetName - The name of the destination sheet
 */
function getCSV_(fileId, sheetName) {
  //ENTER YOUR CSV FILE ID IN THE getFileByID
  var file = DriveApp.getFileById(fileId);
  var csvFile = file.getBlob().getDataAsString();
  var csvData = Utilities.parseCsv(csvFile);

  //CHANGE SHEET NAME TO WHATEVER YOUR SHEET IS CALLED
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.clear().getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
/**
*向电子表格中添加自定义菜单。
*/
功能开启(e){
SpreadsheetApp.getUi()
.createMenu(“刷新数据”)
.addItem(“获取CSV”、“导入表”)
.addToUi();
}
/**
*导入所有CSV文件。
*/
函数getCSVs(){
//定义CSV文件及其保存位置
var csvs=[
{fileId:“FILE_ID_1”,sheetName:“Sheet1”},
{fileId:“FILE_ID_2”,sheetName:“Sheet2”}
];
//导入CSV
对于(变量i=0;i
您定义了两次
getCSV()
,这将导致问题。函数名和变量一样,应该是唯一的。否则,它们将被重写

以两个
test()
函数为例。每次运行
testAll()
,输出总是2

function testAll() {
  test(); // 2.0
  test(); // 2.0
}

function test() {
  Logger.log(1);
}

function test() {
  Logger.log(2);
}
您可以做的是修改
getCSV()
,以便它接受输入,然后创建一个新函数,将数据传递给它。然后调用菜单中的新函数

/**
 * Add a custom menu to the spreadsheet.
 */
function onOpen(e) {
  SpreadsheetApp.getUi()
  .createMenu("RefreshData")
  .addItem("Get CSVs", "importSheets")
  .addToUi();
}

/**
 * Imports all CSV files.
 */
function getCSVs() {
  // Define the CSV files and where you want them to be saved
  var csvs = [
    { fileId: "FILE_ID_1", sheetName: "Sheet1" },
    { fileId: "FILE_ID_2", sheetName: "Sheet2" }
  ];

  // Import the CSVs
  for (var i = 0; i < csvs.length; i++) {
    getCSV_(csvs[i].fileId, csvs[i].sheetName);
  }
}

/**
 * Get the CSV data from a specified file and import into the desired
 * sheet of the active spreadsheet.
 * @param {String} fileId - The file ID of the CSV file
 * @param {String} sheetName - The name of the destination sheet
 */
function getCSV_(fileId, sheetName) {
  //ENTER YOUR CSV FILE ID IN THE getFileByID
  var file = DriveApp.getFileById(fileId);
  var csvFile = file.getBlob().getDataAsString();
  var csvData = Utilities.parseCsv(csvFile);

  //CHANGE SHEET NAME TO WHATEVER YOUR SHEET IS CALLED
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  sheet.clear().getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
/**
*向电子表格中添加自定义菜单。
*/
功能开启(e){
SpreadsheetApp.getUi()
.createMenu(“刷新数据”)
.addItem(“获取CSV”、“导入表”)
.addToUi();
}
/**
*导入所有CSV文件。
*/
函数getCSVs(){
//定义CSV文件及其保存位置
var csvs=[
{fileId:“FILE_ID_1”,sheetName:“Sheet1”},
{fileId:“FILE_ID_2”,sheetName:“Sheet2”}
];
//导入CSV
对于(变量i=0;i
创建了一个附加函数getCSV2,该函数表示工作表名称和ID,然后在getCSV函数中填充和循环

function onOpen(e) {

SpreadsheetApp.getUi()

.createMenu('RefreshData')

.addItem('Run getCSV', 'getCSV')

.addToUi()

}

function getCSV() {
  getCSV2("sheet1", "<file_id1>");
  getCSV2("sheet2", "<file_id2>");
}

function getCSV2(name, id) {

var file = DriveApp.getFileById(id);

var csvFile = file.getBlob().getDataAsString();

var csvData = Utilities.parseCsv(csvFile);

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name);

sheet.clear();

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

}
开启功能(e){
SpreadsheetApp.getUi()
.createMenu(“刷新数据”)
.addItem('Run getCSV','getCSV')
.addToUi()
}
函数getCSV(){
getCSV2(“sheet1”和“);
getCSV2(“sheet2”和“);
}
函数getCSV2(名称、id){
var file=DriveApp.getFileById(id);
var csvFile=file.getBlob().getDataAsString();
var csvData=Utilities.parseCsv(csvFile);
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(名称);
sheet.clear();
sheet.getRange(1,1,csvData.length,csvData[0]。leng