top of page
- Script Code -

dofile(reaper.AZ_GetLuaInitPath())

require("reaper_AZSTOKE_BRONZE")  

require("reaper_AZSTOKE_SILVER")   

require("reaper_AZSTOKE_GOLD")


defaultExcelPath = "D:\\reapdock\\voice\\Recording.xlsx"


function InsertTrackInfo(excelPath)

    excel = reaper.AZ_Excel_OpenFile(excelPath)

    worksheet = reaper.AZ_Excel_OpenWorksheet(excel, "収録内容")

    

    -- 開始行特定

    newRow = 4

    searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, ".+", "B", newRow..":1000,B", true)

    

    for k, v in pairs(searchResult["Cells"]) do newRow = newRow + 1 end

    

    

    trackList = reaper.AZ_GetTrackItemList(0)

    

    for i, track in pairs(trackList) do

        

        if reaper.AZ_GetTrackItemDepth(track) == 0 then

        

            trackName = reaper.AZ_GetTrackItemName(track)

            

            searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, trackName, "B")


            resultRow = ""

            for k, v in pairs(searchResult["Cells"]) do

                 resultRow = k

            end


            if resultRow == "" then

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 2, trackName)

                newRow = newRow + 1


            end

        end

    

    end

    

    reaper.AZ_Excel_SaveDocument(excel)

    reaper.AZ_Excel_CloseFile(excel)


end


function InsertFileInfo(excelPath)

    excel = reaper.AZ_Excel_OpenFile(excelPath)

    worksheet = reaper.AZ_Excel_OpenWorksheet(excel, "波形名")

    

    -- 開始行特定

    newRow = 4

    existRows = {}

    searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, ".+", "D", newRow..":5000,D", true)

    for i, line in pairs(searchResult["Cells"]) do 

        newRow = newRow + 1 

        

        table.insert(existRows, line["D"])

    end


    mediaItemList = reaper.AZ_GetMediaItemList(0)

    

    for i, media in pairs(mediaItemList) do

    

        fileName = reaper.AZ_GetMediaItemName(media)

        

        filenameComponent = reaper.AZ_GetStringSplitList(fileName, "_")

        if filenameComponent[#filenameComponent] ~= "ng" then

        

            exist = false

            for j, val in pairs(existRows) do

                if val == fileName then

                    exist = true

                end

            end

          

            

            if exist == false then

                mikeTrack = reaper.GetMediaItemTrack(media)

                mikeName = reaper.AZ_GetTrackItemName(mikeTrack)

                

                soundTrack = reaper.GetParentTrack(mikeTrack)

                soundName = reaper.AZ_GetTrackItemName(soundTrack)  

                

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 2, soundName)

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 3, mikeName) 

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 4, fileName) 

                

                newRow = newRow + 1

            

            end

        end

    end

    

    reaper.AZ_Excel_SaveDocument(excel)

    reaper.AZ_Excel_CloseFile(excel)



end


function main()


    retval, inputList = reaper.AZ_GetUserInputList("", 1, "Excelパス", defaultExcelPath)

    if retval == false then return end

    

    retval, pushedButton = reaper.AZ_ShowMessageBox_Warn("出力先のExcelファイルを閉じていますか?", "", reaper.AZ_WindowType_OK_Cancel())

    if retval == false then return end

    

    excelPath = inputList[1]


    -- 収録内容

    InsertTrackInfo(excelPath)

    

    -- ファイル名

    InsertFileInfo(excelPath)

    

    reaper.AZ_ShowMessageBox_Info("Excelへの出力が完了しました。", "", reaper.AZ_WindowType_OK())

    


end


main()

- Warm Up -

  • Excelファイルを用意する

  • 収録に使用したプロジェクトを用意する

- Script Detail -

dofile(reaper.AZ_GetLuaInitPath())

require("reaper_AZSTOKE_BRONZE")  

require("reaper_AZSTOKE_SILVER")   

require("reaper_AZSTOKE_GOLD")


・RIGDOCKSをインポート


defaultExcelPath = "D:\\reapdock\\voice\\Recording.xlsx"


・Excelファイルのパス(デフォルト)


function InsertTrackInfo(excelPath)


・トラック情報を収録内容シートに出力する関数


    excel = reaper.AZ_Excel_OpenFile(excelPath)

    worksheet = reaper.AZ_Excel_OpenWorksheet(excel, "収録内容")


・Excelファイルを開き、収録内容シートを開く

    

    -- 開始行特定

    newRow = 4


・トラック情報の出力を開始する行を指定


    searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, ".+", "B", newRow..":1000,B", true)

    

    for k, v in pairs(searchResult["Cells"]) do newRow = newRow + 1 end


・ 既にトラック情報が出力されている場合は、次の行から出力するように開始行を更新

    

    trackList = reaper.AZ_GetTrackItemList(0)


・プロジェクト内の全トラックを取得

    

    for i, track in pairs(trackList) do


・全トラックをループ

        

        if reaper.AZ_GetTrackItemDepth(track) == 0 then


・トラックの深さが0の場合(サウンドトラックの場合)に処理を行う

        

            trackName = reaper.AZ_GetTrackItemName(track)


・トラックの名前を取得

            

            searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, trackName, "B")


・トラック名が既に収録内容シートに出力されているか検索


            resultRow = ""

            for k, v in pairs(searchResult["Cells"]) do

                 resultRow = k

            end


・検索結果から行番号を取得


            if resultRow == "" then

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 2, trackName)

                newRow = newRow + 1


・トラック名が収録内容シートに出力されていない場合は、次の行にトラック名を出力


            end

        end

    

    end

    

    reaper.AZ_Excel_SaveDocument(excel)

    reaper.AZ_Excel_CloseFile(excel)


・Excelファイルを保存して閉じる


end


function InsertFileInfo(excelPath)


・ファイル名を波形名シートに出力する関数


    excel = reaper.AZ_Excel_OpenFile(excelPath)

    worksheet = reaper.AZ_Excel_OpenWorksheet(excel, "波形名")


・Excelファイルを開き、波形名シートを開く

    

    -- 開始行特定

    newRow = 4


・ファイル名の出力を開始する行を指定


    existRows = {}

    searchResult = reaper.AZ_Excel_SearchRowsInWorksheet(worksheet, ".+", "D", newRow..":5000,D", true)

    for i, line in pairs(searchResult["Cells"]) do 

        newRow = newRow + 1 

        

        table.insert(existRows, line["D"])

    end


・既にファイル名が出力されている場合は、次の行から出力するように開始行を更新し、既に出力されているファイル名をリストに保存


    mediaItemList = reaper.AZ_GetMediaItemList(0)

    

・プロジェクト内の全てのメディアアイテムを取得


    for i, media in pairs(mediaItemList) do

    

・全てのメディアアイテムをループ


        fileName = reaper.AZ_GetMediaItemName(media)

        

・メディアアイテムの名前を取得


        filenameComponent = reaper.AZ_GetStringSplitList(fileName, "_")


・メディアアイテムの名前を"_"で分割してリストにする


        if filenameComponent[#filenameComponent] ~= "ng" then

        

・ファイル名の最後の要素が"ng"でない場合に処理を行う


            exist = false

            for j, val in pairs(existRows) do

                if val == fileName then

                    exist = true

                end

            end


・既にファイル名が出力されているかリストから検索

            

            if exist == false then


・ファイル名が既に出力されていない場合に処理を行う


                mikeTrack = reaper.GetMediaItemTrack(media)

                mikeName = reaper.AZ_GetTrackItemName(mikeTrack)

                

・メディアアイテムのトラックを取得し、トラックの名前(マイク名)を取得


                soundTrack = reaper.GetParentTrack(mikeTrack)

                soundName = reaper.AZ_GetTrackItemName(soundTrack)  


・マイクトラックの親トラックを取得し、トラックの名前(サウンド名)を取得

                

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 2, soundName)

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 3, mikeName) 

                reaper.AZ_Excel_SetCellValue_ByNumber(worksheet, newRow, 4, fileName) 


・次の行にサウンド名、マイク名、ファイル名を出力

                

                newRow = newRow + 1


・次の行に出力するために行番号を更新

            

            end

        end

    end

    

    reaper.AZ_Excel_SaveDocument(excel)

    reaper.AZ_Excel_CloseFile(excel)


・Excelファイルを保存して閉じる



end


function main()


    retval, inputList = reaper.AZ_GetUserInputList("", 1, "Excelパス", defaultExcelPath)

    if retval == false then return end


・ユーザーにExcelファイルのパスを入力してもらう。デフォルトでdefaultExcelPathが入力されている状態にする

    

    retval, pushedButton = reaper.AZ_ShowMessageBox_Warn("出力先のExcelファイルを閉じていますか?", "", reaper.AZ_WindowType_OK_Cancel())

    if retval == false then return end


・ユーザーにExcelファイルを閉じているか確認する。OKが押された場合は処理を続行し、キャンセルが押された場合は処理を中止する

    

    excelPath = inputList[1]


・ユーザーが入力したExcelファイルのパスを変数に保存


    -- 収録内容

    InsertTrackInfo(excelPath)


・ 収録内容シートにトラック情報を出力する関数を呼び出す

    

    -- ファイル名

    InsertFileInfo(excelPath)


・ 波形名シートにファイル名を出力する関数を呼び出す

    

    reaper.AZ_ShowMessageBox_Info("Excelへの出力が完了しました。", "", reaper.AZ_WindowType_OK())


・ユーザーに出力完了のメッセージを表示

    


end


main()


・main関数を呼び出す


- API LINK -

Excel

AZSTOKE_Recording_OutputMediasToExcel

書き出したメディア情報をExcelに出力

01_BRONZE_ss_edited.png
01_SILVER_edited_edited.png
03_GOLD_edited_edited.png
bottom of page