【问题标题】:Script worked on all sheest and stop working suddenly only on one sheet脚本在所有工作表上都有效,并且仅在一张工作表上突然停止工作
【发布时间】:2020-02-11 09:50:13
【问题描述】:

在提交表单时,我已经为带有偏移量的 Google 表格编写了脚本。 有 2 个工作表和 2 个关联的 Gform。

以前,以下脚本在两张纸上都运行良好。 突然,脚本只在一张纸上工作。我试图在我想要的活动工作表上手动启动脚本(显然激活工作表),脚本没有运行。但是,该脚本在另一张纸上运行良好。

总结一下:

脚本没有运行(手动没有 Gforms 提交偏移):sheetname "DemandeIntervention F-TEC-052" 脚本正在运行(手动或使用 Gforms 提交偏移):sheetname "RapportIntervention F-QUA-052"

以下脚本:

function CopyFormatting() {

//Déclaration des variables
var SS = SpreadsheetApp.getActiveSheet(); //Sheet of forms response
var LastRow = SS.getLastRow(); //last row of sheet (n)
var RefRow = SS.getRange('3:3'); //Row n°3 considered as reference

//Copy formatting to last row from reference row
RefRow.copyTo(SS.getRange(LastRow,1), {formatOnly: true});

}

请问,您能帮我在两张纸上运行脚本吗? 谢谢

【问题讨论】:

  • 要解决问题,您可以将SpreadsheetApp.getActiveSheet(); 替换为SpreadsheetApp.getSheetByName("PASTE HERE THE NAME OF THE SHEET"),手动运行代码,看看是否有任何错误。否则,查看您的工作表以了解它们有什么问题会很有帮助。
  • @ziganotschka 如果你有 gmail 地址,我可以分享这张表。我已替换为以下var SS = SpreadsheetApp.getSheetByName('DemandeIntervention F-TEC-052'); //Sheet of forms response 和编译错误 TypeError: SpreadsheetApp.getSheetByName is not a function (ligne 5, fichier "IncrementDI")
  • 对 stackoverflow 的良好实践是提供对工作表的公共访问权限(在删除所有敏感信息或通过虚拟值替换它之后!),以便其他用户也可以看到它,以防他们想要提供你的手。
  • @ziganotschka 请在下文中找到一份 Gsheet docs.google.com/spreadsheets/d/…
  • 很遗憾,由于缺少权限,我仍然无法打开电子表格

标签: google-apps-script google-sheets google-forms


【解决方案1】:

您的两张表之间的区别在于,非工作表在单元格B104 中有一个值。

因此SS.getLastRow(); 检索104 作为工作表的最后一行,因此单元格A104 是每个脚本执行期间要格式化的单元格。

您可以通过删除最后一个表单响应行下方的所有行来避免此问题。

如果文本 i B104 对您很重要,那么您必须通过其他方法替换 getLastRow(),例如 e.g. getNextDataCell(direction).

【讨论】:

  • 感谢您的支持。我自己也刚刚发现了我的错误。 Gsheet中有很多空单元格,脚本被认为是文档底部的最后一行。
  • 没错!对于将来的故障排除,您可以通过Logger.log(SS.getLastRow(); 将实际的最后一行与预期的行进行比较。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
相关资源
最近更新 更多