我制作了一个脚本来循环浏览多个电子表格,用于两个目的。
问题是我的脚本运行但没有做任何事情。
因为我只是一个学习制作剧本的初学者。(我的编码基础是零。)我不知道为什么我的剧本没有做任何事情。
任何一些建议都将受到高度赞赏。
function myFunction() {
var idSheet = SpreadsheetApp.openById('myspreadsheetID').getSheetByName('คีย์บัญชี');
var todayDate = new Date();
todayDate.setHours(0,0,0,0);
var last7DaysDate = new Date();
last7DaysDate.setHours(0,0,0,0);
last7DaysDate.setDate(todayDate.getDate()-7);
for(var x=4;x<=6;x++){
var id = idSheet.getRange(x, 2).getValue();
var s = SpreadsheetApp.openById(id);
var ss = s.getSheetByName('คีย์บัญชี');
//set format วันที่ ตัวอย่างเช่น พฤ. 26
var rangeToFormat = ss.getRange('C2:C');
rangeToFormat.setNumberFormat('ddd D');
var data = ss.getRange('C1:C').getValues();
for(var i = 0; i<data.length; i++){
var fDate = new Date(data[i]);
if (fDate.getDate() == last7DaysDate.getDate() &&
fDate.getMonth() == last7DaysDate.getMonth() &&
fDate.getFullYear() == last7DaysDate.getFullYear()) {
var protection = ss.protect();
var lastRow = ss.getLastRow();
var unprotected1 = ss.getRange(i+1,3,lastRow-i,7); //คีย์รายการขาย
var unprotected2 = ss.getRange('X10:AB25'); //ประวัติการตัดยอดฝาก
var unprotected3 = ss.getRange('X31:AB41'); //ค่าใช้จ่ายประจำเดือน
protection.setUnprotectedRanges([unprotected1,unprotected2,unprotected3]);
}
}
}
}
答案 0 :(得分:0)
สวัสดีครับคุณน้อง
此确实有效。
首先,检查以确保您有权编辑电子表格。
检查您是否使用了正确的id
。尝试插入Logger.log()
语句以查看脚本使用的值。
for(var x=4;x<=6;x++){
var id = idSheet.getRange(x, 2).getValue();
Logger.log("x: " x + "ID: " + id);
...
}
运行脚本,然后查看日志
接下来,检查您的条件值。再次使用Logger.log()
。具体来说,请检查last7DaysDate
:
Logger.log("Last7Date: " + last7DaysDate.getDate() + "/" + (last7DaysDate.getMonth()+1) + "/" + last7DaysDate.getFullYear())
请注意,.getMonth()
的值为零索引,因此您应将 display 添加1到期望值。
然后,查看您要比较的日期值。
Logger.log("fDate: "+ fDate.getDate() + "/" + (fDate.getMonth()+1) + "/" + fDate.getFullYear());
我仅在对受保护范围X10:AB25
和X31:AB41
进行更改后运行了您的脚本。它运行没有错误,更改格式,并设置表格保护。
โชคดีนะครับ