Googleシート内の特定の範囲のCSVファイルを書き出すためのスクリプトを作成(実際には変更)しました。それはうまく機能している:"For Google Script in TypeErrorループを導入
function convertRangeToCsvFile_(csvFileName,delimiter) {
// Get the selected range in the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var ws = sheet.getRange("F3:G501");
try {
var data = ws.getValues();
var csvFile = undefined;
// Loop through the data in the range and build a string with the CSV data
if (data.length > 1) {
var csv = "";
for (var row = 0; row < data.length; row++) {
for (var col = 0; col < data[row].length; col++) {
if (data[row][col].toString().indexOf(delimiter) != -1) {
data[row][col] = "\"" + data[row][col] + "\"";
}
}
// Join each row's columns
// Add a carriage return to end of each row, except for the last one
if (row < data.length-1) {
csv += data[row].join(delimiter) + "\r\n";
}
else {
csv += data[row];
}
}
csvFile = csv;
}
return csvFile;
}
catch(err) {
Logger.log(err);
Browser.msgBox(err);
}
}
はしかし、私は今、それを設定したいようにスクリプトを反復3種類以上のセルの範囲と一つの大きな長いCSVにそれらすべてを連結します。私が言うことができるものから
TypeError: Cannot find function getValues in object 0.
、これはスコープの問題のいくつかの種類がありますが、私はできません:私は、私はそうスクリプトがエラーを返しないときしかし、for
ループを使用して、これをやろうとしています私の人生は私がそれを解決するのに役立つものを見つける。ここに私の壊れたコードです:
function convertRangeToCsvFile_(csvFileName,delimiter) {
// Get the selected range in the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var ranges = [sheet.getRange("F3:G501"),sheet.getRange("H3:I501"),sheet.getRange("J3:K501")];
try {
for (var ws in ranges) {
var data = ws.getValues();
var csvFile = undefined;
// Loop through the data in the range and build a string with the CSV data
if (data.length > 1) {
var csv = "";
for (var row = 0; row < data.length; row++) {
for (var col = 0; col < data[row].length; col++) {
if (data[row][col].toString().indexOf(delimiter) != -1) {
data[row][col] = "\"" + data[row][col] + "\"";
}
}
// Join each row's columns
// Add a carriage return to end of each row, except for the last one
if (row < data.length-1) {
csv += data[row].join(delimiter) + "\r\n";
}
else {
csv += data[row];
}
}
csvFile = csv;
}
}
return csvFile;
}
catch(err) {
Logger.log(err);
Browser.msgBox(err);
}
}
私が試したところ調整for
ループ開始時と終了(もともとはもちろん、「未定義」エラーの原因となったvar data = ws.getValues();
ラインにかかりませんでした。)
しかし、私の最善の努力にもかかわらず、私の(非常に経験の浅い)脳が解析できる方法でこの問題に対処する情報はありません!
ご了承ください。
ありがとう、ジョナトン - それは終わった! – sulvo