我在谷歌表格中有一個列,其中包含一系列日期。我想在恰好是星期天的日期之后插入一個空白行(我只關心這一天)。
我想到的偽代碼如下:
- 遍歷日期列
- 格式化日期,以便我們只獲取完整縮寫的日期(即星期日)
- 如果格式化日期等于字串“Sunday”,則在該日期下方插入一行。
這是我當前的腳本:
function addRows() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet = ss.getActiveSheet();
const range = sheet.getDataRange();
const data = range.getValues();
for (let i = 1; i < data.length; i ) {
const sheetDate = data[i][0];
const day = Utilities.formatDate(sheetDate, ss.getSpreadsheetTimeZone(), "EEEE");
if (day === "Sunday") {
sheet.insertRowsAfter(i, 1); // I know this shouldn't be i, it should be the index of the row with the value "Sunday"
}
}
}
我認為問題出在insertRowsAfter()函式的第一個引數上。這個論點應該是什么?
uj5u.com熱心網友回復:
似乎在行位置之后每次插入新行,您的資料范圍都會調整,因此,您還需要調整包含
Sunday.
建議
也許你可以試試下面這個調整過的腳本:
function addRows() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const sheet = ss.getActiveSheet();
const range = sheet.getDataRange();
const data = range.getValues();
var count = 0;
for (let i = 1; i < data.length; i ) {
var row = i 1; //Get the sheet row number of every data from "data" variable
const sheetDate = data[i][0];
const day = Utilities.formatDate(sheetDate, ss.getSpreadsheetTimeZone(), "EEEE");
if (day == "Sunday") {
count = 1; //Count how many times "Sunday" was found
var curRow = row count; //Adjust the current row #
curRow -= 1; //Subtract 1 row from the current row to match the sheet
sheet.insertRowsAfter(curRow,1)
}
}
}
樣品測驗
- 測驗表:
- 運行調整后的腳本后:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/452732.html
下一篇:獲取下拉選單的值


