- 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に出力











