我試圖使用Google Spreadsheet中的一些宏從Excel文檔複製某些功能。最終目標是導出一個固定寬度的txt文件。不幸的是,供應商無法使用CSV文件。那麼,有沒有人知道使用Google腳本生成固定寬度TXT文件的方法?將Google表格導出爲TXT文件(固定寬度)
0
A
回答
2
以防其他人來看。我用了幾個來源,想出了這個:
function saveAsFixedWidthTxt() {
// get Spreadsheet Name
var fileName = SpreadsheetApp.getActiveSpreadsheet().getName();
//var fileName = SpreadsheetApp.getActiveSheet().getSheetName();
// get Directory the Spreadsheet is stored in.
var dirName = DocsList.getFileById(SpreadsheetApp.getActive().getId()).getParents()[0].getName();
// Add the ".txt" extension to the file name
fileName = fileName + ".txt";
// Convert the range data to fixed width format
var txtFile = convertRangeToTxtFile_(fileName);
// Delete existing file
deleteDocByName(fileName);
// Create a file in the Docs List with the given name and the data
DocsList.getFolder(dirName).createFile(fileName, txtFile);
}
function convertRangeToTxtFile_(txtFileName) {
try {
var txtFile = undefined;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var rows = sheet.getDataRange();
var data = rows.getValues();
// Loop through the data in the range and build a string with the data
if (data.length > 1) {
var txt = "";
for (var row = 2; row < data.length; row++) {
for (var j=6; j<=10; j++){
if(data[row][j] != ''){
// Employee ID
var empID = "" + data[row][3];
txt += empID;
//Fill to 6 characters
for (i=empID.length; i<6; i++){
txt += " ";
}
// Name
var fullName = data[row][5] + " " + data[row][4]
txt += fullName;
//Fill to 43 characters
for (i=fullName.length; i<44; i++){
txt += " ";
}
// etc, etc to build out your line
txt += "\r\n";
}
}
}
txtFile = txt;
}
return txtFile;
}
catch(err) {
Logger.log(err);
Browser.msgBox(err);
}
}
function deleteDocByName(fileName){
var docs=DocsList.find(fileName)
for(n=0;n<docs.length;++n){
if(docs[n].getName() == fileName){
var ID = docs[n].getId()
DocsList.getFileById(ID).setTrashed(true)
}
}
}
1
這將工作:
- 出口板材作爲
xlsx
,然後在Excel中打開該文件。 - 將該文件導出爲
Space Delimited Text
(.prn
,出於某種原因)。 - 將結果文件上的文件擴展名更改爲
.txt
。
這將導致這樣的文件:
Column Another Column 3
Val 1 2 $ 5.00
或者你需要直接獲得一個.txt
文件了谷歌Apps腳本的?
編輯因爲需要直接下載.txt
。
這裏是你如何可以設計一個腳本來做到這一點:
- 找到一個方法來
sheet.getColumnWidth(n)
轉換爲數字的空間。您可能會發現每個列有5個像素到1個字符或任何比例 - 運行
getColumnWidth()
可找到每列需要的寬度。 或者,在每個單元格中查找長度最長的字符串。 - 遍歷每個單元格並將其添加到您開始構建的大字符串中。添加它時,請添加匹配從
getColumnWidth()
轉換的值所需的空格數。在每行末尾,附加\n
以表示新行。
一旦輸出字符串是完整的,然後你可以使用Content Service下載的文本像這樣:
ContentService.createTextOutput(youBigString).downloadAsFile('filename.txt')
這將涉及部署腳本的Web應用程序,它可以很好地工作 - 你'轉到URL並且頁面會觸發固定寬度文件的下載。
相關問題
- 1. pgrid - 固定表格寬度
- 2. 帶固定寬度列的表格 - 不指定表格寬度
- 3. 固定寬度格
- 4. 將數據從SQL Server 2005導出爲固定寬度的文件
- 5. 將固定寬度的txt文件轉換爲CSV/set-content或out-file -append?
- 6. 將固定寬度的文本文件導入sqlite
- 7. 將文本文件導出爲列寬固定的文本文件
- 8. 固定寬度表格 - 寬度不同的單元格?
- 9. 將Bootstrap 3表格標題強制爲固定寬度
- 10. 如何將列中的表格行拆分爲固定寬度
- 11. 將位置設置爲固定時,表格寬度超過100%
- 12. 加載固定寬度,空間分隔的.txt文件到MySQL
- 13. 將sql服務器表導出爲固定長度的文本文件
- 14. 維護表格寬度固定
- 15. 固定頭/可變寬度的表格
- 16. 固定寬度表格單元
- 17. 保持在格文本固定寬度
- 18. CSS:沒有固定文本格寬度
- 19. 爲什麼固定寬度文件格式仍在使用中?
- 20. 如何爲可變單元格寬度設置固定表格邊框寬度
- 21. 如何在保留sig figs的同時將Mathematica列表作爲固定寬度的文本文件導出?
- 22. 具有固定單元格寬度但自動錶格寬度的表格
- 23. 將表格寬度設置爲100%,沒有表格佈局:固定
- 24. 如何將數據從查詢導出爲固定列寬的文本文件?
- 25. 自動將Google表格文檔轉換爲.txt表格文本文件
- 26. 加速R中固定寬度格式表的導入
- 27. 格式編號爲固定寬度,帶前導零
- 28. 將固定寬度設置爲Nivo Slider
- 29. 將固定寬度平面文件轉換爲csv的腳本
- 30. 設計表格佈局固定和固定寬度列+ colspan
不幸的是,我需要直接從谷歌文本文件。 – MSCF
是否可以直接下載鏈接:https://drive.google.com/uc?export = download&id =?如何獲得谷歌腳本數據這樣的網址? – user1788736