gpt4 book ai didi

csv - Google Apps Script Utilities.parseCsv() 和替换字符 - �

转载 作者:行者123 更新时间:2023-12-01 07:58:28 25 4
gpt4 key购买 nike

我正在开发一个项目,该项目涉及 Google Drive 中的一个 csv 文件,该文件每分钟左右都会使用新数据进行更新。
我已经构建了一个电子表格仪表板,以使 csv 中的数据更有意义。
我错误地假设我可以使用 Google 电子表格函数 =importdata(url) 将 Google Drive 中的 CSV 中的数据获取到我的 Google 电子表格中,但是,除非我将 CSV 公开,否则会产生错误,这不是出于安全和隐私原因是可行的。即使我确实公开了 CSV 并使用了 importdata,进来的数据也是完全格式错误且无法使用的——它看起来与实际的 CSV 完全不同。
malformed data with importdats(url)
我正在尝试编写一个脚本来自动导入 csv 数据,使用 DriveApp 打开 csv 文件,Utilities.parseCsv 将 csv 转换为数据数组,然后 setValues 将数据写入工作表。

function importData() {
var ss = SpreadsheetApp.getActive();
var file = DriveApp.getFilesByName("Agent Performance.csv")
var csv = file.next().getBlob().getDataAsString();
var csvData = Utilities.parseCsv(csv);
var sheet = ss.getSheetByName('CSV Import TEST');
for (var i = 0; i < csvData.length; i++) {
sheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
}
}
问题是我得到了替换字符,例如:所有写入工作表的数据。太奇怪了。工作表看起来很正常,但是如果您单击一个单元格来查看它的值,则公式栏会显示单元格中的任何文本,但每个字符之间是一个�。这使得 Google 表格中的任何计算都变得不可能。
Notice replacement characters in formula bar
如果我只是使用谷歌表格"file"和“导入”和“替换当前工作表”导入相同的 CSV,数据就可以了。这不是一个好的解决方案,因为我真的希望在 CSV 更新和 Google 表格中的仪表板更新之间有几分钟的延迟。如果我必须手动上传 CSV,它就违背了系统的目的。
任何帮助将不胜感激。谢谢!

最佳答案

你检查过文件字符集吗?调用 getDataAsString(charset) 时可以指定.试试这个:

function importData() {
var ss = SpreadsheetApp.getActive();
var file = DriveApp.getFilesByName("Agent Performance.csv")
var csv = file.next().getBlob().getDataAsString('ISO-8859-1'); //note the charset
var csvData = Utilities.parseCsv(csv);
//unless you csv has variable amount of columns per line, you should do this
if(csvData.length > 0) {
ss.getSheetByName('CSV Import TEST')
.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
} else
throw 'Blank file';
}

关于csv - Google Apps Script Utilities.parseCsv() 和替换字符 - �,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com