使用 Google Apps 脚本从 sheet 上的 kmz 写入数据
Write data from kmz on sheet with Google Apps Script
我是 Google Apps 脚本的新手。我必须从多个 kmz 读取数据(主要是地标和描述)。到目前为止,我已经设法用 XmlService 读取和解析它。将数据传输到电子表格的最佳方式是什么?
var kmzFile = DriveApp.getFileById('<ID>').getBlob();
var unzipBlobs = Utilities.unzip (kmzFile.setContentType('application/zip'));
var xml = unzipBlobs[0].getDataAsString()
var document = XmlService.parse(xml)
var root = document.getRootElement();
var nameSpace = root.getNamespace()
var folderRoot = root.getChild('Document', nameSpace).getChild('Folder', nameSpace)
var folders = folderRoot.getChildren('Folder', nameSpace)
如何解析 kmz 取决于特定文档的结构,但假设您感兴趣的数据包含在 folders
:
下面是一个示例,说明如何将检索到的 kmz 数据插入到给定传播sheet 的新 sheet 中:
var ss = SpreadsheetApp.openById("PASTE THE SPREADSHEET ID HERE");
var newSheet = ss.insertSheet();
var values = [];
if(folders.length!=0){
for (var i = 0; i< folders.length; i++){
values[i]=[];
values[i].push(folders[i]);
}
newSheet.getRange(1,1,values.length, values[0].length).setValues(values);
}
基本上,您遍历所有 folders
并动态创建数据大小的值范围,然后将其分配给 sheet.
中的范围
我是 Google Apps 脚本的新手。我必须从多个 kmz 读取数据(主要是地标和描述)。到目前为止,我已经设法用 XmlService 读取和解析它。将数据传输到电子表格的最佳方式是什么?
var kmzFile = DriveApp.getFileById('<ID>').getBlob();
var unzipBlobs = Utilities.unzip (kmzFile.setContentType('application/zip'));
var xml = unzipBlobs[0].getDataAsString()
var document = XmlService.parse(xml)
var root = document.getRootElement();
var nameSpace = root.getNamespace()
var folderRoot = root.getChild('Document', nameSpace).getChild('Folder', nameSpace)
var folders = folderRoot.getChildren('Folder', nameSpace)
如何解析 kmz 取决于特定文档的结构,但假设您感兴趣的数据包含在 folders
:
下面是一个示例,说明如何将检索到的 kmz 数据插入到给定传播sheet 的新 sheet 中:
var ss = SpreadsheetApp.openById("PASTE THE SPREADSHEET ID HERE");
var newSheet = ss.insertSheet();
var values = [];
if(folders.length!=0){
for (var i = 0; i< folders.length; i++){
values[i]=[];
values[i].push(folders[i]);
}
newSheet.getRange(1,1,values.length, values[0].length).setValues(values);
}
基本上,您遍历所有 folders
并动态创建数据大小的值范围,然后将其分配给 sheet.