我正在尝试自动下载 Google 表格 -> 管道分隔的文本文件。基本上,我想创建一个时间驱动的脚本以在 Google 电子表格上运行,以将其保存为带有|
分隔符的 .txt。
电子表格本身是一个单一的工作表,它使用 IMPORTRANGE 从我的主文件中提取数据以供最终用户访问。
现在我手动将它下载为.csv,在记事本中打开它,用|
's'替换所有逗号,然后另存为.txt
,然后将该文件上传到需要去的地方(上传无关紧要,必须是手动的) . 我想为自己自动化,但也让另一个用户在我不可用时通过脚本获取最终的 .txt 文件。最重要的是,我希望它能够在没有用户输入或活动工作站的情况下运行(它应该在周日早上运行),因此它必须在时间触发的 Google Apps 脚本中。
我的 JavaScript 经验很少,所以我能想到的唯一解决方案是两个嵌套的 for 循环(sheetID
并sheetName
保留):
var ss= SpreadsheetApp.openById(sheetID)
var pipeDelimitedString = ""
var sheet = ss.getSheetByName(sheetName)
var lastRow = sheet.getLastRow()
var lastColumn = sheet.getLastColumn()
var fileName = "PIPE DELIMITED TEST FILE"
for (var i=1;i<=lastRow;i++){
for(var j=1;j<=lastColumn;j++){
if (j==lastColumn){
pipeDelimitedString = pipeDelimitedString + "|" + sheet.getRange(i,j).getValue()+"/n"
} else {
pipeDelimitedString = pipeDelimitedString + "|" + sheet.getRange(i,j).getValue()
}
}
}
newFile = DriveApp.createFile(fileName,pipeDelimitedString);
然后是一个小脚本,将 newFile 通过电子邮件发送给其他用户(还没有写那部分,但我在 google 上看到了很多解决方案,所以不用担心电子邮件部分)
这必须在 66 列和最多 200 行(>10k 总单元格)的工作表上运行。我在只有约 50 行的数据集上对其进行了测试,我不得不停止它。即使它确实有效,它也会占用我太多用于触发脚本的 Google Apps 脚本配额。
我确定我已经走错了方向。请帮忙?即使只是从哪里开始也将不胜感激。
我无法共享实际文件,只能共享一个虚拟副本,但我很确定解决方案不应该是特定于内容的?除了原始文件数据中没有逗号或管道这一事实之外,如果有帮助,只有文本和数字的混合?