Logseqの起動は、毎回2022-07-10のショートカットで行っていたが、結局ファイル重複は防げなかった。
もっとも、まっさらな(新しいジャーナルページが作られたときにアプリが自動的に適用するテンプレートによる書き込みのみ)ファイルができていただけ。「 2」が付かない方が本来のページとして認識されていたので何も支障は無かった。
そもそもの原因がわからないので、全く闇雲な対応。多分、見当違いだろうな。
Scriptableのスクリプト: ULLogseqFile2iCloud
const ignoreFolder = [".Trash"] const myAlertF = async (title, message) => { let a = new Alert() a.title = title if (message) a.message = message a.addAction("OK") await a.presentAlert() } const recurFileUpload = async (pathS) => { const fileNameSA = fmLC.listContents( fmLC.joinPath( BasePathS, pathS ) ) for (const fileNameS of fileNameSA) { const filePathS = fmLC.joinPath( pathS, fileNameS) const fullPathS = fmLC.joinPath( BasePathS, filePathS ) if ( fmLC.isDirectory( fullPathS ) ) { if ( !ignoreFolder.includes( fileNameS ) ) recurFileUpload( filePathS ) } else { if (!fmIC.isFileStoredIniCloud( fullPathS )) { fmIC.write(fullPathS, fmLC.read(fullPathS)) uploadFileNameSA.push(filePathS) await myAlertF( filePathS ) } } } } const fmLC = FileManager.local() const fmIC = FileManager.iCloud() let BasePathS let uploadFileNameSA = [] if ( !fmLC.bookmarkExists("Logseq") ) { await myAlertF((Device.language() == "ja") ? `Logseqのアイコンの付いているフォルダがブックマークされていません。` : `The folder with the Logseq icon is not bookmarked.`) } else { BasePathS = fmLC.bookmarkedPath("Logseq") await recurFileUpload("") if (uploadFileNameSA.length) await myAlertF("Uploaded File", uploadFileNameSA.join("\n")) } Script.complete()
iCloudドライブ/Logseq/ 以下の.Trashフォルダ以外の全ファイルが対象。もしファイルがiCloudドライブに保存されていなかったら、iCloudドライブにアップロードする。
症状からいって、ここまでパラノイアじみた対応が必要とは思えないが。(iPhoneとiPadで同時にLogseqアプリを起動しておくのは論外として。)
新しいジャーナルページが作られたときにアプリが自動的にテンプレートを適用するように設定できるので、自分もそうしている。
アプリ起動時はファイルの読み込み等色々ヘビーな処理が重なるのでは?もしかして、それらの処理とテンプレート適用の処理ががちあって、重複ファイル問題を作り出しているんじゃないか?と勝手な想像をしているが、本当のところはどうなのだろう?