var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export");
Run Code Online (Sandbox Code Playgroud)
我正在运行 Google Sheet 脚本,并且在上面的代码行中收到以下错误消息。知道如何解决这个问题吗?我是新手。
错误信息:
您无权调用 create(第 38 行,文件“宏”)
我有一个多列的谷歌表。我希望将每一行的值组合成一个字符串并将该字符串转换为 base64。
示例:工作表数据
A1 B1 C1 D1 E1
NewYork Smith kalk smith@gmail.com 468783778
Run Code Online (Sandbox Code Playgroud)
细绳:
NewYork,Smith,kalk,smith@gmail.com,468783778
Run Code Online (Sandbox Code Playgroud)
结果 base64:
TmV3WW9yayxTbWl0aCxrYWxrLHNtaXRoQGdtYWlsLmNvbSw0Njg3ODM3Nzg=
我正在编写代码,用户可以在其中自动生成课程和子主题的模板。每课有 10 个小主题。
我还需要按课程和主题对行进行分组。
但是,我无法按课程和主题对行进行分组。尝试使用宏记录器,但代码在生成多个课程时不起作用。
编辑:工作代码更新如下。
function shiftrowgroupdepth() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
// start from row 6 and column 2
var row = 6;
var col = 2;
//Ask user for the no. of lessons
var shlen = Browser.inputBox("Enter no of lessons", Browser.Buttons.OK_CANCEL);
for (var i = 1; i <= shlen; i++) {
sheet.getRange(row,col).setValue("Lesson " + i);
row++;
Logger.log(spreadsheet.getCurrentCell().getRow())
sheet.getRange(row, 1, 70, sheet.getMaxColumns()).activate()
.shiftRowGroupDepth(1);
// Add sub-topics (1.1, 1.2 ....)
for (var j=1;j<=10;j++){
sheet.getRange(row,col).setValue(i+"."+j);
sheet.getRange(row+1, …Run Code Online (Sandbox Code Playgroud) 我长期使用电子表格的技术之一是就地复制/粘贴特殊值 (C/PSV)。使用公式生成我感兴趣的值 IC/PSV,然后可以删除源数据。
所以我写了一个使用这种技术的宏,但单元格最终是空的。但如果我将宏分成两个,在 C/PSV 之前结束第一个宏,那么一切都会按预期进行。为什么是这样?有没有更好的方法来解决这个问题?这是我的三个宏。
function Step1() {
var spreadsheet = SpreadsheetApp.getActive();
var range = spreadsheet.getActiveRange();
CopyRangeToNewSheet(spreadsheet, range);
spreadsheet.getCurrentCell().offset(-1, 6).activate();
FillInHeaders(spreadsheet);
spreadsheet.getCurrentCell().offset(1, -4).activate();
FillInFormulas(spreadsheet);
spreadsheet.getCurrentCell().offset(0, -4, range.getNumRows(), 5).activate();
spreadsheet.getCurrentCell().offset(0, 0, 1, 5).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
function Step2() {
var spreadsheet = SpreadsheetApp.getActive();
var keepers = spreadsheet.getRange('G:J');
keepers.activate();
keepers.copyTo(keepers, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
var discard = spreadsheet.getRange('A:F')
discard.activate();
spreadsheet.getActiveSheet().deleteColumns(discard.getColumn(), discard.getNumColumns());
};
function BothSteps() {
var spreadsheet = SpreadsheetApp.getActive();
var range = spreadsheet.getActiveRange();
CopyRangeToNewSheet(spreadsheet, range);
spreadsheet.getCurrentCell().offset(-1, 6).activate();
FillInHeaders(spreadsheet);
spreadsheet.getCurrentCell().offset(1, -4).activate();
FillInFormulas(spreadsheet);
spreadsheet.getCurrentCell().offset(0, -4, …Run Code Online (Sandbox Code Playgroud) 我想将我的 Google 电子表格的备份创建到我的 Google Drive 文件夹中,但作为 Excel 文件。我设法创建了一个代码来创建 gsheet 的副本并将其保存到文件夹中,但我无法更改代码以将其保存为 Excel 文件。
你能帮我吗?
function makeCopy() {
var formattedDate = Utilities.formatDate(new Date(), "CET", "yyyy-MM-dd' 'HH:mm");
var name = "Backup Copy " + formattedDate;
var destination = DriveApp.getFolderById("1vFL98cgKdMHLNLSc542pUt4FMRTthUvL");
var file = DriveApp.getFileById("2SqIXLiic6-gjI2KwQ6OIgb-erbl3xqzohRgE06bfj2c")
file.makeCopy(name, destination);
}
Run Code Online (Sandbox Code Playgroud) export-to-excel google-sheets google-apps-script google-sheets-macros
我正在尝试使用 Google 表格让文本自动调整大小以适应其单元格。我将单元格宽度设置为特定大小,并且电子邮件和职位等内容可能会变得很长。
我知道 Google 表格本身并不像 Excel 那样支持缩小文本以适应(为什么!!!!!!),但是有没有我可以运行的脚本可以实现同样的目的?
base64 ×1