如何使用 DriveApp 而不是 DocsList 将 csv 文件导入 Google 表格
How to import csv files to Google Sheets using DriveApp instead of DocsList
我有一个类似于 的问题,只是使用 FileID 对我来说不切实际。
我一直在使用这个 Google 脚本:
https://developers.google.com/apps-script/articles/docslist_tutorial
将 csv 文件导入 Google 表格,以便我可以使用其他 Google 脚本修改 csv 文件。但是,DocsList 功能昨天正式停用了,我的代码似乎无法与 DriveApp 一起使用。
function importFromCSV() {
var fileName = Browser.inputBox("Enter the name of the file in your Docs List to import (e.g. myFile.csv):");
var files = DocsList.getFiles();
var csvFile = "";
for (var i = 0; i < files.length; i++) {
if (files[i].getName() == fileName) {
csvFile = files[i].getContentAsString();
break;
}
}
var csvData = CSVToArray(csvFile, ",");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
for (var i = 0; i < csvData.length; i++) {
sheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
}
}
我无法弄清楚如何在搜索后按名称实际检索特定文件 -- 我尝试了各种不成功的版本,例如:
var fileName = Browser.inputBox("Enter the name of the file in your Docs List to import (e.g. myFile.csv):");
var searchFiles = DriveApp.searchFiles(title = fileName);
while (searchFiles.hasNext()) {
var file = searchFiles.next();
Logger.log(file.getName());
}
var csvFile = file.getBlob().getDataAsString();// get string content
Logger.log(csvFile);// check in the logger
var csvData = CSVToArray_(csvFile);// convert to 2D array
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
sheet.getRange(1,1, csvData.length, csvData[0].length).setValues(csvData);// write to sheet in one single step
}
我的编码经验很少,所以任何建议将不胜感激!
您的搜索参数语法缺少引号。应该是这样的:
var searchFiles = DriveApp.searchFiles("title = '" + fileName + "'");
我有一个类似于 的问题,只是使用 FileID 对我来说不切实际。
我一直在使用这个 Google 脚本: https://developers.google.com/apps-script/articles/docslist_tutorial 将 csv 文件导入 Google 表格,以便我可以使用其他 Google 脚本修改 csv 文件。但是,DocsList 功能昨天正式停用了,我的代码似乎无法与 DriveApp 一起使用。
function importFromCSV() {
var fileName = Browser.inputBox("Enter the name of the file in your Docs List to import (e.g. myFile.csv):");
var files = DocsList.getFiles();
var csvFile = "";
for (var i = 0; i < files.length; i++) {
if (files[i].getName() == fileName) {
csvFile = files[i].getContentAsString();
break;
}
}
var csvData = CSVToArray(csvFile, ",");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
for (var i = 0; i < csvData.length; i++) {
sheet.getRange(i+1, 1, 1, csvData[i].length).setValues(new Array(csvData[i]));
}
}
我无法弄清楚如何在搜索后按名称实际检索特定文件 -- 我尝试了各种不成功的版本,例如:
var fileName = Browser.inputBox("Enter the name of the file in your Docs List to import (e.g. myFile.csv):");
var searchFiles = DriveApp.searchFiles(title = fileName);
while (searchFiles.hasNext()) {
var file = searchFiles.next();
Logger.log(file.getName());
}
var csvFile = file.getBlob().getDataAsString();// get string content
Logger.log(csvFile);// check in the logger
var csvData = CSVToArray_(csvFile);// convert to 2D array
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
sheet.getRange(1,1, csvData.length, csvData[0].length).setValues(csvData);// write to sheet in one single step
}
我的编码经验很少,所以任何建议将不胜感激!
您的搜索参数语法缺少引号。应该是这样的:
var searchFiles = DriveApp.searchFiles("title = '" + fileName + "'");