第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 Google Apps 腳本將多個(gè) CSV 文件導(dǎo)入 Google Sheets

使用 Google Apps 腳本將多個(gè) CSV 文件導(dǎo)入 Google Sheets

當(dāng)年話下 2023-07-06 17:00:34
所以我正在為我的家庭管理做一個(gè)個(gè)人項(xiàng)目。我想在打開電子表格 (adminSheet.gs) 時(shí)自動(dòng)導(dǎo)入 .csv 文件??梢允謩?dòng)執(zhí)行此操作,但我希望自動(dòng)執(zhí)行此操作,因?yàn)槲冶仨殞?dǎo)入 30 多個(gè) .csv 文件,而且還會(huì)有更多文件。我已啟用谷歌應(yīng)用程序腳本(GAS)。然而,GAS 對我來說是新的,我對 Javascript 有點(diǎn)熟悉,但是自從我上大學(xué)以來已經(jīng)有一段時(shí)間了..我希望你能幫助我!以下是事實(shí)。我有多個(gè) .csv 文件,每個(gè)文件都有不同的名稱。它們位于名為 CSVfolder 的同一文件夾中。此文件夾位于 Google 云端硬盤中的主文件夾 MAINfolder 中。它們由分隔符分隔;(分號)。CSV 文件具有相同的數(shù)據(jù)結(jié)構(gòu),并且每個(gè) .csv 文件的第一行相同。第一行已放入工作表 adminSheet.gs 中,作為標(biāo)題行,稱為 HEADER。因此,導(dǎo)入時(shí)需要?jiǎng)h除每個(gè) .csv 文件的第一行。我將在 CSV 文件夾中上傳新的 .csv 文件。這些文件名遵循以下命名結(jié)構(gòu)。ID_01-09-2020_30-09-2020.csv 或 ID_01-10-2020_31-10-2020.csv。ID 后跟更改日期。(.csv 數(shù)據(jù)將針對該時(shí)間段。不會(huì)發(fā)生重疊或重復(fù)的數(shù)據(jù),因?yàn)槲覍⑹謩?dòng)選擇數(shù)據(jù)集)。然而,這當(dāng)然會(huì)讓它變得非常整潔。當(dāng)我打開 adminSheet.gs(位于 MAINfolder 中)時(shí),它需要自動(dòng)識別任何新的 .csv 文件并將其與所有其他(之前導(dǎo)入的).csv 數(shù)據(jù)合并到現(xiàn)有的 adminSheet.gs 中。新的 .csv 文件應(yīng)合并到固定標(biāo)題行 HEADER 下方和先前導(dǎo)入的 .csv 文件上方。(這也可以解釋為:在 HEADER 和 adminSheet.gs 中已有的數(shù)據(jù)之間)(這也可以解釋為:.csv 中的新數(shù)據(jù)應(yīng)位于 adminSheet.gs 中已有的舊數(shù)據(jù)之上)。什么 Google Apps 腳本可以做到這一點(diǎn)?
查看完整描述

1 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

以下代碼的工作原理如下:

  • 從 csv 文件中獲取數(shù)據(jù)作為數(shù)組

  • 在標(biāo)題行后插入多行

  • 在工作表中設(shè)置數(shù)組

  • 導(dǎo)入 csv 文件后將其移至存檔文件夾,這樣就不會(huì)再次導(dǎo)入它們

  • 然后移至下一個(gè)文件,直到?jīng)]有更多文件可供導(dǎo)入

您需要?jiǎng)?chuàng)建一個(gè)存檔文件夾來存儲(chǔ)導(dǎo)入后的 csv 文件。為此,我通常會(huì)在包含 csv 文件夾的文件夾中創(chuàng)建一個(gè)。

在代碼中,您需要提供存檔文件夾和根文件夾(包含 CSV 文件夾的文件夾)的文件夾 ID 以及電子表格中目標(biāo)工作表的名稱。這些都可以在代碼中的前四個(gè)變量中設(shè)置。(我已經(jīng)csvFolderName根據(jù)您上面提供的信息設(shè)置為“CSVfolder”。

保存此代碼后,在其上創(chuàng)建一個(gè)觸發(fā)器以在打開時(shí)運(yùn)行。

這是代碼:

function importCSVFiles()

{

  var ss = SpreadsheetApp.getActiveSpreadsheet(); 

  const csvFolderName = 'CSVfolder';                                       // Folder containing csv files and the Archive folder

  const rootFolderId = 'id_of_folder_containing_CSVfolder';                // Root folder

  const archiveFolderId = 'id_of_archiveFolder';                           // Archive Folder

  const destinationSheetName = 'name_of_destination_sheet_in_spreadsheet'; // destination sheet in spreadsheet

  

  const root = DriveApp.getFolderById(rootFolderId);

  const archiveFolder = DriveApp.getFolderById(archiveFolderId);

  

  const fileName =/ *.csv/;

  

  var rootFolders = root.getFolders();

  

  const sheet = ss.getSheetByName(destinationSheetName);

  var csvArray = [];

  

  while (rootFolders.hasNext()) 

  {

    var folder = rootFolders.next ();

    Logger.log('folder.getName()',folder.getName());

    if (folder.getName() === csvFolderName) 

    {

      importCSV(folder);

    }

    else 

    {

      var csvFolder = folder.getFoldersByName(csvFolderName);

      while (csvFolder.hasNext()) 

      {

        importCSV(csvFolder.next());

      }

    }

  }

  

  function importCSV(folder) 

  {

    var files = folder.getFiles();

    while (files.hasNext()) 

    {

      var file = files.next();

      Logger.log('file.getName()',file.getName());

      csvArray = file.getBlob().getDataAsString("UTF-8");

      csvArray = Utilities.parseCsv(csvArray);

      csvArray.shift();

      sheet.insertRowsAfter(1,csvArray.length);

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

      

      file.moveTo(archiveFolder);

    }

  }

}

如果您似乎對分隔符有問題,您可能需要通過將上面的代碼行替換為來將其專門設(shè)置為自定義分隔csvArray = Utilities.parseCsv(csvArray);符csvArray = Utilities.parseCsv(csvArray,';');


查看完整回答
反對 回復(fù) 2023-07-06
  • 1 回答
  • 0 關(guān)注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號