DriveApp API中的getContentAsString()的替代方法是什么?

编程入门 行业动态 更新时间:2024-10-24 00:26:13
本文介绍了DriveApp API中的getContentAsString()的替代方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个脚本,可以从Google驱动器中的.csv文件中获取内容,并将其放入Google表格中。该脚本使用已弃用的DocsList服务。下面的工作需要,但我想过渡DocsList组件到DriveApp,以确保它在可预见的未来。

我看到的主要问题是,getContentAsString()方法似乎不适用于DriveApp。有没有getContentAsString()或其他元素的组合的直接替代方法,可以达到与下面的脚本相同的结果?

函数importFromCSV(){ var fileName =0B2n-RwpLExXnaXRBWG1aT3NLbm8; var FileId = DriveApp.getFileById(0B2n-RwpLExXnaXRBWG1aT3NLbm8); var files = DocsList.getFiles(); var csvFile =; (文件名[i] .getId()==文件名){ csvFile = { for(var i = 0; i< files.length; i ++)文件[I] .getContentAsString(); Logger.log(files [i]); 休息; } } 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])); } }

解决方案

DriveApp文件对象有一个 getBlob()方法,blob对象有一个 getDataAsString()方法...你可以链接这两种方法来获取字符串内容。

下面是完整的代码,应该尽可能简化(初始代码中还有其他不一致之处,正如您的前一个问题中所述)。

function importFromCSV(){ var id =0B2n-RwpLExXnaXRBWG1aT3NLbm8; var file = DriveApp.getFileById(id); //获取文件对象 var csvFile = file.getBlob()。getDataAsString(); //获取字符串内容 Logger.log csvFile); //检查记录器 var csvData = CSVToArray_(csvFile); //转换为二维数组 var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); sheet.getRange(1,1,csvData.length,csvData [0] .length).setValues(csvData); //一次写入表单} 函数CSVToArray_(strData){ var rows = strData.split(\\\); Logger.log(rows.length); var array = []; for(n = 0; n

I have a script that will get the content from a .csv file in Google drive and pull it in to a Google Sheet. The script uses the DocsList service which is deprecated. The below works as required but I want to transition the DocsList components to DriveApp to ensure it works for the foreseeable future.

The main issue I see is that the getContentAsString() method does not appear to be available for DriveApp. Is there a direct alternative to getContentAsString() or a combination of other elements that can achieve the same outcome as the below script?

function importFromCSV() { var fileName = "0B2n-RwpLExXnaXRBWG1aT3NLbm8"; var FileId = DriveApp.getFileById("0B2n-RwpLExXnaXRBWG1aT3NLbm8"); var files = DocsList.getFiles(); var csvFile = ""; for (var i = 0; i < files.length; i++) { if (files[i].getId() == fileName) { csvFile = files[i].getContentAsString(); Logger.log(files[i]); 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])); } }

解决方案

The DriveApp file object has a getBlob() method, the blob object has a getDataAsString() method... You can chain both methods to get a string content.

Below is the full code, simplified as it should (there were other inconsistencies in your initial code , as already mentioned in your former question).

function importFromCSV() { var id = "0B2n-RwpLExXnaXRBWG1aT3NLbm8"; var file = DriveApp.getFileById(id);// get the file object 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 } function CSVToArray_(strData){ var rows = strData.split("\n"); Logger.log(rows.length); var array = []; for(n=0;n<rows.length;++n){ if(rows[n].split(',').length>1){ array.push(rows[n].split(',')); } } Logger.log(array); return array; }

更多推荐

DriveApp API中的getContentAsString()的替代方法是什么?

本文发布于:2023-11-16 11:19:54,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   DriveApp   API   getContentAsString

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!