Info Exporter MT5
- ユーティリティ
- Ramesh Maharjan
- バージョン: 1.0
Info Exporter MT5は、ターミナル情報、アカウント情報、取引履歴、注文履歴をローカルCSVファイルへエクスポートし、メールを送信したり、Apps ScriptでデプロイされたURLを使用してGoogleスプレッドシートに直接エクスポートしたりできます。 CSVへのエクスポート、メールを使用したエクスポート、Googleスプレッドシートへのエクスポートから選択できます。また、エクスポートしたファイル名やスプレッドシート名を変更することもできます。 使用する入力パラメータ:
export terminal informations? : 端末情報をエクスポートするかどうかを選択します。値は true または false に変更できます。
terminal info file or sheet name : デフォルトは「Terminal_Info」ですが、入力プロンプトで変更できます。
export historical deals? : 取引履歴をエクスポートするかどうかを選択します。値は true または false に変更できます。デフォルトは false で、エクスポートしません。
history deals file or sheet name : デフォルトは「History_Deals」ですが、入力プロンプトで変更できます。
export historical orders? : 注文履歴をエクスポートするかどうかを選択します。値は true または false に変更できます。デフォルトは false で、エクスポートしません。
history orders file or sheet name : デフォルトは「History_Orders」ですが、入力プロンプトで変更できます。
export account informations? : アカウント情報をエクスポートするかどうかを選択します。値は true または false に変更できます。デフォルトは false で、エクスポートしません。
account info file or sheet name : デフォルトは「Account_Info」ですが、入力プロンプトで値を変更できます。
do you want to write to file? : 有効なデータを csv ファイルにエクスポートするかどうかを選択します。デフォルトは false で、書き込まないことを意味します。
do you want to send informations to email? : 有効なデータをメールにエクスポートするかどうかを選択します。デフォルトは false で、メールを送信しません。
do you want to export to Google sheet? : 有効なデータを Google スプレッドシートにエクスポートするかどうかを指定するオプション。デフォルトは false で、Google スプレッドシートに書き込まないようにします。
Apps Script deployed url : デプロイされた Apps Script の URL。
実際に動作する Apps Script のコードを以下に示します(doPost 関数にコピー&ペーストするだけです)。
function doPost(e) {
try {
// Validate input
if (!e || !e.postData || !e.postData.contents) {
throw new Error("no Input data found");
}
// Parse JSON safely
const json = JSON.parse(e.postData.contents);
const sheetName = json.sheetName || "Sheet1";
// Get sheet (with error handling)
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
}
// formatting data to be written in sheet
var terminalInfo = json.data.split("#;#");
var insertingData = [];
for(var i = 0; i < terminalInfo.length; i++) {
insertingData.push(terminalInfo[i].split("#:#"))
}
var startRow = 1;
var startColumn = 1;
var numRows = insertingData.length;
var numColumns = insertingData[0].length;
var range = sheet.getRange(startRow, startColumn, numRows, numColumns);
// Overwrite the rows with the new data
range.setValues(insertingData);
// Return success
return ContentService.createTextOutput(JSON.stringify({
status: "success",
message: "Data written to sheet"
})).setMimeType(ContentService.MimeType.JSON);
} catch (err) {
// Return error details
return ContentService.createTextOutput(JSON.stringify({
status: "error",
message: err.message
})).setMimeType(ContentService.MimeType.JSON);
}
}