循环遍历多个电子表格的脚本不起作用

时间:2018-04-02 04:20:29

标签: google-apps-script google-sheets

我制作了一个脚本来循环浏览多个电子表格,用于两个目的。

  • 第一个是'.setNumberFormat'。
  • 第二个是查找查找日期和'.setUnprotectedRanges'。

问题是我的脚本运行但没有做任何事情。

因为我只是一个学习制作剧本的初学者。(我的编码基础是零。)我不知道为什么我的剧本没有做任何事情。

任何一些建议都将受到高度赞赏。

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]);
      }
}

}

}

1 个答案:

答案 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);
  ...
}

运行脚本,然后查看日志

enter image description here

接下来,检查您的条件值。再次使用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:AB25X31:AB41进行更改后运行了您的脚本。它运行没有错误,更改格式,并设置表格保护。

enter image description here

โชคดีนะครับ