Last active
December 25, 2015 18:39
-
-
Save sugimotoak/7021879 to your computer and use it in GitHub Desktop.
[GoogleAppsScript][Android][iOS]generate multi-language file
string.xml
Localizable.strings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* output string.xml into GoogleDrive | |
*/ | |
function outputStringXml_Android() { | |
// read Spreadsheet | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var rows = sheet.getDataRange(); | |
var numRows = rows.getNumRows(); | |
var numCols = rows.getNumColumns(); | |
var values = rows.getValues(); | |
var buffer = new _StringBuffer(); | |
// create folder | |
var date = new Date(); | |
var year = date.getFullYear(); | |
var month = date.getMonth()+1; | |
var day = date.getDate(); | |
var hour = date. getHours(); | |
var minute = date.getMinutes(); | |
var second = date.getSeconds(); | |
var folder = DocsList.createFolder("string_" + year + _slice2(month) + _slice2(day) + "_" + _slice2(hour) + _slice2(minute) + _slice2(second)); | |
var valuesFolder; | |
var constFolder; | |
try { | |
constFolder = DocsList.getFolder("multi_language_" + values[2][2]); | |
constFolder.setTrashed(true); | |
} catch (e) { | |
} finally { | |
constFolder = DocsList.createFolder("multi_language_" + values[2][2]); | |
} | |
// const | |
var filename = "string.xml"; | |
var foldername = "values"; | |
var newline = "\r\n"; | |
// output by creating a file in each locale | |
for (var j_col = 2; j_col <= numCols - 1; j_col++) { | |
buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); | |
buffer.append(newline); | |
buffer.append("<resources>"); | |
buffer.append(newline); | |
for (var i_row = 2; i_row <= numRows - 1; i_row++) { | |
if (values[i_row][0].length != 0) { | |
buffer.append("/* "); | |
buffer.append(values[i_row][0]); | |
buffer.append(" */\n"); | |
} | |
buffer.append("<string name=\""); | |
buffer.append(values[i_row][1]); | |
buffer.append("\">"); | |
buffer.append(values[i_row][j_col]); | |
buffer.append("</string>\n\n"); | |
} | |
buffer.append("</resources>\n"); | |
if (j_col == 2) { | |
valuesFolder = DocsList.createFolder(foldername); | |
} else { | |
valuesFolder = DocsList.createFolder(foldername + "-" + values[1][j_col]); | |
} | |
valuesFolder.addToFolder(folder); | |
valuesFolder.addToFolder(constFolder); | |
valuesFolder.removeFromFolder(DocsList.getRootFolder()); | |
var outputFile = DocsList.createFile(filename, ""); | |
outputFile.append(buffer.toString()); | |
outputFile.addToFolder(valuesFolder); | |
outputFile.removeFromFolder(DocsList.getRootFolder()); | |
buffer = new _StringBuffer(); | |
} | |
} | |
/** | |
* output string.xml into GoogleDrive | |
*/ | |
function outputLocalizableStrings_iOS() { | |
// read Spreadsheet | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var rows = sheet.getDataRange(); | |
var numRows = rows.getNumRows(); | |
var numCols = rows.getNumColumns(); | |
var values = rows.getValues(); | |
var buffer = new _StringBuffer(); | |
// create folder | |
var date = new Date(); | |
var year = date.getFullYear(); | |
var month = date.getMonth()+1; | |
var day = date.getDate(); | |
var hour = date. getHours(); | |
var minute = date.getMinutes(); | |
var second = date.getSeconds(); | |
var folder = DocsList.createFolder("LocalizableStrings_" + year + _slice2(month) + _slice2(day) + "_" + _slice2(hour) + _slice2(minute) + _slice2(second)); | |
var valuesFolder; | |
var constFolder; | |
try { | |
constFolder = DocsList.getFolder("multi_language_" + values[2][2]); | |
constFolder.setTrashed(true); | |
} catch (e) { | |
} finally { | |
constFolder = DocsList.createFolder("multi_language_" + values[2][2]); | |
} | |
// const | |
var filename = "Localizable.strings"; | |
var foldername = ".lproj"; | |
var newline = "\r\n"; | |
// output by creating a file in each locale | |
for (var j_col = 2; j_col <= numCols - 1; j_col++) { | |
for (var i_row = 2; i_row <= numRows - 1; i_row++) { | |
if (values[i_row][0].length != 0) { | |
buffer.append("/* "); | |
buffer.append(values[i_row][0]); | |
buffer.append(" */\n"); | |
} | |
buffer.append("\""); | |
buffer.append(values[i_row][1]); | |
buffer.append("\" = \""); | |
buffer.append(values[i_row][j_col]); | |
buffer.append("\";\n\n"); | |
} | |
valuesFolder = DocsList.createFolder(values[1][j_col] + foldername); | |
valuesFolder.addToFolder(folder); | |
valuesFolder.addToFolder(constFolder); | |
valuesFolder.removeFromFolder(DocsList.getRootFolder()); | |
var outputFile = DocsList.createFile(filename, ""); | |
outputFile.append(buffer.toString()); | |
outputFile.addToFolder(valuesFolder); | |
outputFile.removeFromFolder(DocsList.getRootFolder()); | |
buffer = new _StringBuffer(); | |
} | |
} | |
/** | |
* fill string with 0 | |
*/ | |
function _slice2(num) { | |
return ("0" + num).slice(-2); | |
} | |
/** | |
* StringBuffer | |
*/ | |
function _StringBuffer() { | |
this.__strings__ = new Array; | |
} | |
_StringBuffer.prototype.append = function (str) { | |
this.__strings__.push(str); | |
}; | |
_StringBuffer.prototype.toString = function () { | |
return this.__strings__.join(""); | |
}; | |
/** | |
* paint alternating background of the selected | |
*/ | |
function paintAlternatingBackground() { | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var range = SpreadsheetApp.getActiveRange(); | |
var numColumns = range.getNumColumns(); | |
var row = range.getRow(); | |
var col = range.getColumn(); | |
var lastRow = row + range.getNumRows(); | |
for(var i=row;i<=lastRow;i++){ | |
if(i%2==0){ | |
sheet.getRange(i, col, 1, numColumns).setBackgroundColor('#FFAA00'); | |
}else{ | |
sheet.getRange(i, col, 1, numColumns).setBackgroundColor('#FFFFFF'); | |
} | |
} | |
}; | |
/** | |
* run first | |
*/ | |
function formatSpreadsheet() { | |
var sheet = SpreadsheetApp.getActiveSheet(); | |
var header = sheet.getRange("A1:D2"); | |
header.setBackground("#DEDEDE"); | |
header.setVerticalAlignment("middle"); | |
header.setHorizontalAlignment("center") | |
var comment = sheet.getRange("A1:A2"); | |
comment.mergeVertically(); | |
comment.setValue("comment"); | |
var comment = sheet.getRange("B1:B2"); | |
comment.mergeVertically(); | |
comment.setValue("id"); | |
sheet.getRange("C1").setValue("english"); | |
sheet.getRange("C2").setValue("en"); | |
sheet.getRange("D1").setValue("日本語"); | |
sheet.getRange("D2").setValue("ja"); | |
sheet.getRange("A3").setValue("Application Name"); | |
sheet.getRange("B3").setValue("app_name"); | |
sheet.getRange("C3").setValue("TestApplication"); | |
sheet.getRange("D3").setValue("テストアプリケーション"); | |
sheet.getRange("B4").setValue("hello"); | |
sheet.getRange("C4").setValue("hello"); | |
sheet.getRange("D4").setValue("こんにちわ"); | |
var range = sheet.getRange("A3:D30"); | |
var numColumns = range.getNumColumns(); | |
var row = range.getRow(); | |
var col = range.getColumn(); | |
var lastRow = row + range.getNumRows(); | |
for(var i=row;i<=lastRow;i++){ | |
if(i%2==0){ | |
sheet.getRange(i, col, 1, numColumns).setBackgroundColor('#FFAA00'); | |
}else{ | |
sheet.getRange(i, col, 1, numColumns).setBackgroundColor('#FFFFFF'); | |
} | |
} | |
sheet.getRange("A1:D30").setBorder(true, true, true, true, true, true); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment