OneDriveUpload関数(TKInfo.dll)(Ver7.30対応版)
 OneDriveUpload関数は、パラメータで指定されたファイルをOneDriveにアップロードして、さらに共有リンクを作成します。共有リンクについて、パスワードや有効期限となる日数が指定できます。この関数を使うには、「全般的な設定」の「ウイルス対策 - 詳細」ページの中にある「Officeファイルをサンドボックス内で安全に開く用のOAuthログイン...」ボタンを押して、あらかじめご自身のマイクロソフトアカウントにてログインしておく必要があります。

 この関数でアップロードできる先は、ログインした先のOneDrive上の、「秀丸メール アップロード」という名前のフォルダ固定になります。秀丸メールが英語モードの場合は「HidemaruMail Upload」の名前となります。その配下にさらにサブフォルダを作成して、そこにアップロードされる形になります。他の任意のフォルダへアップロードすることは出来ません。

 この関数は、パスワード付きzipファイルの形で添付ファイルを送る、いわゆる「PPAP」の代替として添付ファイルを渡す用に用意しています。PPAPの代替として、添付ファイルをOneDriveにアップロードしてパスワード付きで共有リンクを作成し、そのリンクをメールに表示しつつ、パスワードは別便で送ることを想定しています。共有リンクを受け取った側ではファイルの内容をWebブラウザ上でプレビューでき、必要ならそこからダウンロードする形になります。特にWord/Excelファイルを送る場合に受け取る側のウイルス感染のリスクが軽減できて、有益だと思います。

パラメータ1(文字列型)
 アップロードするファイルをフルパスで指定します。例えば"C:\\テストフォルダ\\テストファイル.txt"のようなファイル名を指定します。


パラメータ2(文字列型)
 アップロードする先のフォルダ名またはフォルダ階層のパス名を指定します。
 ここのパラメータに単純なフォルダ名のみを指定した場合、OneDriveのルート配下に「秀丸メール アップロード」のフォルダ配下に作成されて、その配下にパラメータで指定されたフォルダが作成されて、そこにアップロードされます。同じ名前のフォルダが既にあった場合は、「_」と数字が付加された別の名前のフォルダが作成されてそこにアップロードされます。例えば"テスト"を指定した場合には、"テスト_2"や"テスト_3"のような名前になって作成されます。
 ここのパラメータに「\」で区切ったフォルダ階層を指定すると、その通りのフォルダ階層が【秀丸メール アップロード」の配下に作成されます。ただしその場合でも階層の一番最後のフォルダ名について、同じ名前のフォルダが既にあった場合は、上記の「テスト_2」のように番号付きに変更されます。
 ここのパラメータの先頭に「\」を付けた場合、「秀丸メール アップロード」配下じゃなくて、ルート直下にフォルダが作成されます。ただしその場合はフォルダ階層を最低2つ指定する必要があります。例えば"\\テスト"のような指定だとエラーになります。"\\テスト\\テスト"のように2つ以上してください。

 このパラメータを省略するか、または""を指定した場合、現在の日時に基づいて、「YYYY\YYYY-MM-DD」のようなフォルダが指定された扱いになります。例えば2023年4月6日なら「2023\2023-04-06」のようなフォルダになります。実際に作成されるのは「秀丸メール アップロード\2023\2023-04-06」のようになります。

 秀丸メールが英語モードの場合は「秀丸メール アップロード」の所が「HidemaruMail Upload」のようになります。


パラメータ3(文字列型)
 共有リンクを作成する時のパスワードを指定します。""を指定するか、または省略するとパスワード無しになります。

 パスワード付き共有リンクを作成するには「全般的な設定 - ウイルス対策 - 詳細」でのOAuthログインで、有料のマイクロソフトアカウントにてログインしてある必要があります。無料のアカウントではパスワード付き共有リンクは作成できません。


パラメータ4(数値型)
 共有リンクを作成する時の、リンクの有効期限を日数で指定します。0を指定するとOneDriveでの最大の有効期限である30日になります。

 パラメータ4は省略可能です。省略すると0を指定した扱いになります。



返り値(文字列型)
 作成した共有リンクのURLを返します。失敗した場合は""が返ります。

 失敗した理由を知る方法は、一般的な送受信関係でのエラーの理由を知る方法と同じになります。「送受信」メニューの「直前のやりとり記録」を見るなどすると分かると思います。


OneDriveUpload_GetMyUrl関数
 OneDriveUploadに成功して共有URLが返った場合に、アップロードしたファイルへの、自身のOneDrive上のファイルへアクセスする用のURLを、このOneDriveUpload_GetMyUrl関数で取得できます。パラメータは無しで、返り値は文字列型です。


OneDriveUpload_GetFolder関数
 OneDriveUploadに成功して共有URLが返った場合に、アップロードしたファイルを含むフォルダ・パスの表示名をを、このOneDriveUpload_GetFolder関数で取得できます。パラメータは無しで、返り値は文字列型です。
 フォルダ名は「秀丸メール アップロード/2023年/2023-04-10_02」のように、フォルダ階層をスラッシュで区切った文字列になります。(あくまで表示用)


loaddll "tkinfo.dll";
$s = dllfuncstr("OneDriveUpload", "c:\\OneDriveUploadテスト.xlsx", "", "testpassword", 7);
if( $s == "" ) {
	message "アップロード失敗";
	endmacro;
}
$MyUrl = dllfuncstr("OneDriveUpload_GetMyUrl");
if( $MyUrl != "" ) {
	#n = dllfunc("SetHeader", "X-Memo", $MyUrl);
}
$folder = dllfuncstr("OneDriveUpload_GetFolder");
gofileend;
insert "---------------------------------------------------------------------\n" +
		"添付ファイル    = OneDriveUploadテスト.xlsx\n" +
		"ダウンロードURL = " + $s + "\n" +
		"フォルダ        = " + $folder + "\n" +
		"URLの有効日数   = 7日\n" +
		"パスワード      = testpassword\n";

question "アップロードに成功しました。共有リンクを確認しますか?";
if( result == yes ) {
	openbyshell $s;
}