使用 Apps 脚本自动处理 Google Sheet 中列的日期
Automating date of a column in Google Sheet using Apps Script
我正在尝试完全自动化 Google Sheet 的关键字报告。
我每月从一个名为 Supermetrics 的 API 导出数据。
我下面的脚本添加一个新列(在 F 之后)并将数据复制到新创建的列(只有脚本的 'date' 部分不起作用)。
我希望此列的 header 是我的数据导出日期。
- 如何按我想要的日期(包含在单元格 C18 中)命名我的列?
- 如何编辑我的脚本,使我的列具有特定日期的名称(比如每个月的 1 日)?
下面link到我的Googlesheet和脚本。非常感谢您的帮助!
https://docs.google.com/spreadsheets/d/1ZD-3r3sceK0H7Q17agyZqVggH3D6utnEFPy69aP2wUg/edit#gid=0
function insertColumn() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KW');
var date = new Date();
var valuestocopy = sheet.getRange(2, 6, 14, 1)
sheet.insertColumnAfter(6).getRange(1,15).setValue(date).setNumberFormat("DD.MM.YY");
valuestocopy.copyValuesToRange(sheet, 7, 7, 2, 15);
}
我注意到您的代码无法正常工作,因为您在第 6 行中使用了 getRange() 函数。您的代码所做的是指向第 1 行第 15 列中的单元格并在此插入日期细胞。所以我所做的就是将函数指向所需的单元格 (G1)。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KW');
var date = new Date();
var valuestocopy = sheet.getRange(2, 6, sheet.getLastRow(), 1);
sheet.insertColumnAfter(6).getRange("G1").setValue(date).setNumberFormat("DD/MM/YY");
valuestocopy.copyValuesToRange(sheet, 7, 7, 2, sheet.getLastRow());
sheet.getRange(1,6,sheet.getLastRow(),1).clearContent();
}
使用此代码,时间戳已从脚本生成并粘贴到新插入列的第 1 行,而不是复制存储在单元格 C18 中的数据,该数据也包含当前时间戳。
Sheet前应用代码:
https://i.stack.imgur.com/DEBat.png
Sheet应用代码后:
https://i.stack.imgur.com/Xgzup.png
参考:copyValuesToRange() getRange(a1Notation) getLastRow()
编辑:我在范围选择时添加了 sheet.getLastRow() 选项,以便它可以根据需要复制的数据进行调整。
我正在尝试完全自动化 Google Sheet 的关键字报告。
我每月从一个名为 Supermetrics 的 API 导出数据。
我下面的脚本添加一个新列(在 F 之后)并将数据复制到新创建的列(只有脚本的 'date' 部分不起作用)。
我希望此列的 header 是我的数据导出日期。
- 如何按我想要的日期(包含在单元格 C18 中)命名我的列?
- 如何编辑我的脚本,使我的列具有特定日期的名称(比如每个月的 1 日)?
下面link到我的Googlesheet和脚本。非常感谢您的帮助!
https://docs.google.com/spreadsheets/d/1ZD-3r3sceK0H7Q17agyZqVggH3D6utnEFPy69aP2wUg/edit#gid=0
function insertColumn() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KW');
var date = new Date();
var valuestocopy = sheet.getRange(2, 6, 14, 1)
sheet.insertColumnAfter(6).getRange(1,15).setValue(date).setNumberFormat("DD.MM.YY");
valuestocopy.copyValuesToRange(sheet, 7, 7, 2, 15);
}
我注意到您的代码无法正常工作,因为您在第 6 行中使用了 getRange() 函数。您的代码所做的是指向第 1 行第 15 列中的单元格并在此插入日期细胞。所以我所做的就是将函数指向所需的单元格 (G1)。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('KW');
var date = new Date();
var valuestocopy = sheet.getRange(2, 6, sheet.getLastRow(), 1);
sheet.insertColumnAfter(6).getRange("G1").setValue(date).setNumberFormat("DD/MM/YY");
valuestocopy.copyValuesToRange(sheet, 7, 7, 2, sheet.getLastRow());
sheet.getRange(1,6,sheet.getLastRow(),1).clearContent();
}
使用此代码,时间戳已从脚本生成并粘贴到新插入列的第 1 行,而不是复制存储在单元格 C18 中的数据,该数据也包含当前时间戳。
Sheet前应用代码: https://i.stack.imgur.com/DEBat.png
Sheet应用代码后: https://i.stack.imgur.com/Xgzup.png
参考:copyValuesToRange() getRange(a1Notation) getLastRow()
编辑:我在范围选择时添加了 sheet.getLastRow() 选项,以便它可以根据需要复制的数据进行调整。