#google-apps-script #google-sheets
#google-apps-script #google-sheets
Вопрос:
Я только что запустил скрипт для экспорта содержимого строки в файл .txt и поставил =, но теперь я хотел бы знать, как я могу добавить содержимое другой строки в файл .txt, как я покажу на скриншоте.
Это код, который у меня есть в настоящее время, но я не могу заставить его работать должным образом.
function exporttotxt() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange('G3:G' sheet.getLastRow());
var rows = range.getValues().filter(([g]) => g.toString() != "");
var range2 = sheet.getRange('I3:I' sheet.getLastRow());
var rows2 = range2.getValues().filter(([i]) => i.toString() != "");
var fileName="exported.txt";
var folderName="Videos";
var data = rows.splice(0);
var data2 = rows2.splice(0);
var str = data.map(function(e) {return e.join()}).join("=") "=" data2.map(function(e) {return e.join()}).join("n");
var content = str;
// get list of folders with matching name
var folderList = DriveApp.getFoldersByName(folderName);
if (folderList.hasNext()) {
// found matching folder
var folder = folderList.next();
// search for files with matching name
var fileList = folder.getFilesByName(fileName);
if (fileList.hasNext()) {
// found matching file - append text
var file = fileList.next();
var combinedContent = content;
file.setContent(combinedContent);
}
else {
// file not found - create new
folder.createFile(fileName, content);
}
}
}
Комментарии:
1. Я не думаю, что вам нужно это делать
filter(([g]) => g.toString() != "")
, поскольку вы используете getLastRow() в своем диапазоне.2. Что это для
data.map(function(e) {return e.join()}).join("=")
e — это просто массив, содержащий только один элемент
Ответ №1:
Я считаю, что ваша цель заключается в следующем.
- Вы хотите создать текст, объединив значения столбцов «G» и «I».
В вашей ситуации, как насчет извлечения значений из столбцов «G» и «I» по одному getValues
? Благодаря этому стоимость процесса будет ниже, а сценарий станет немного проще. Когда это отражается в вашем скрипте, это выглядит следующим образом.
От:
var range = sheet.getRange('G3:G' sheet.getLastRow());
var rows = range.getValues().filter(([g]) => g.toString() != "");
var range2 = sheet.getRange('I3:I' sheet.getLastRow());
var rows2 = range2.getValues().filter(([i]) => i.toString() != "");
var fileName="exported.txt";
var folderName="Videos";
var data = rows.splice(0);
var data2 = rows2.splice(0);
var str = data.map(function(e) {return e.join()}).join("=") "=" data2.map(function(e) {return e.join()}).join("n");
var content = str;
Для:
var range = sheet.getRange('G3:I' sheet.getLastRow());
var rows = range.getValues().filter(([g, _, i]) => g.toString() != "" amp;amp; i.toString() != "");
var fileName="exported.txt";
var folderName="Videos";
var data = rows.splice(0);
var str = data.map(([g, _, i]) => `${g}=${i}`).join("n");
var content = str;
Комментарии:
1. Спасибо, что он работает, но как я могу изменить ячейку вместо ячейки H на ячейку I? потому что я проверяю это, но я все еще получаю содержимое из ячейки H
2. @Miguel Спасибо за ответ. Из вашего ответа я заметил, что неправильно понял вашу цель. Я прошу прощения за это. Я обновил свой ответ. Не могли бы вы подтвердить это, пожалуйста?
3. Нет, вам не нужно извиняться, спасибо за поддержку, я внес изменения, и они работают нормально.
4. @Miguel Спасибо за ответ. Я рад, что ваша проблема была решена. Из вашего ответа я мог заметить, что я его пропустил. И вам спасибо.