是否可以获得 .dsv 格式的 URL for google sheet?
Is it possible to get the URL for google sheet in .dsv format?
我刚刚发现可以将 google sheet 导出为 csv 格式,但实际上我需要分隔符为“|”而不是“,”
有什么办法吗?
要将特定 sheet 下载为 CSV 文件,请将 {key} 替换为文档的 ID,将 {sheet_name} 替换为要导出的 sheet 的名称:
https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}
试试这个(您可能必须用引号将数据封装起来。)。此处文件存储在 'test' 文件夹中(以适应您的项目)。
const where = 'test' // here the name of folder where you want to record the file
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('* Export ... *')
.addItem('... to .dsv format !', 'createDSVFile')
.addToUi();
}
// you have to declare a trigger on onEdit
function onEdit(event){
var sh = event.source.getActiveSheet();
if (sh.getName()=='mySheet'){
createDSVFile()
}
}
function createDSVFile() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr=sh.getLastRow();
var lc=sh.getLastColumn();
var sep = '|';
var txt = '';
for (var i=1;i<=lr;i++){
for (var j=1;j<=lc;j++){
txt += sh.getRange(i,j).getValue() + sep
}
txt = txt.substring(0,txt.length-1) + '\n'
}
var folders = DriveApp.getFoldersByName(where);
if (folders.hasNext()) {
var folder = folders.next();
saveData(folder, 'myDSVFile.dsv',txt);
}
}
function saveData(folder, fileName, content) {
var children = folder.getFilesByName(fileName);
var file = null;
if (children.hasNext()) {
file = children.next();
file.setContent(content);
} else {
file = folder.createFile(fileName, content);
}
toast('File "' + fileName + '" recorded !')
}
function toast(body, title, timeout) {
return SpreadsheetApp.getActive().toast(
body,
title || "information",
timeout || 5 // In seconds
);
}
https://docs.google.com/spreadsheets/d/1h1xXLEOScw2duqydJwtBvZcsfO2vHI05WOf3fojC6VI/copy
我刚刚发现可以将 google sheet 导出为 csv 格式,但实际上我需要分隔符为“|”而不是“,” 有什么办法吗?
要将特定 sheet 下载为 CSV 文件,请将 {key} 替换为文档的 ID,将 {sheet_name} 替换为要导出的 sheet 的名称:
https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet={sheet_name}
试试这个(您可能必须用引号将数据封装起来。)。此处文件存储在 'test' 文件夹中(以适应您的项目)。
const where = 'test' // here the name of folder where you want to record the file
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('* Export ... *')
.addItem('... to .dsv format !', 'createDSVFile')
.addToUi();
}
// you have to declare a trigger on onEdit
function onEdit(event){
var sh = event.source.getActiveSheet();
if (sh.getName()=='mySheet'){
createDSVFile()
}
}
function createDSVFile() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lr=sh.getLastRow();
var lc=sh.getLastColumn();
var sep = '|';
var txt = '';
for (var i=1;i<=lr;i++){
for (var j=1;j<=lc;j++){
txt += sh.getRange(i,j).getValue() + sep
}
txt = txt.substring(0,txt.length-1) + '\n'
}
var folders = DriveApp.getFoldersByName(where);
if (folders.hasNext()) {
var folder = folders.next();
saveData(folder, 'myDSVFile.dsv',txt);
}
}
function saveData(folder, fileName, content) {
var children = folder.getFilesByName(fileName);
var file = null;
if (children.hasNext()) {
file = children.next();
file.setContent(content);
} else {
file = folder.createFile(fileName, content);
}
toast('File "' + fileName + '" recorded !')
}
function toast(body, title, timeout) {
return SpreadsheetApp.getActive().toast(
body,
title || "information",
timeout || 5 // In seconds
);
}
https://docs.google.com/spreadsheets/d/1h1xXLEOScw2duqydJwtBvZcsfO2vHI05WOf3fojC6VI/copy