したがって、merge() 関数で問題が発生します。
スプレッドシート/シートを作成して配置する関数をスクリプト化すると、すべて問題ありません。
しかし、シートのいくつかのセルをマージしたい場合、「選択したセルをマージできません」というエラーが表示されます[実際には英語のエラーメッセージではありませんが、同等です]。
コードを参照してください:
function style(id,magasin,Nom,dateTest){
var ssMois = SpreadsheetApp.openById(id);
var sheet = ssMois.getSheetByName(Nom);
var date=dateTest.toLocaleDateString();
sheet.getRange("A1:D1").merge();
sheet.getRange("B1").setValue("Feuille de caisse du:");
sheet.getRange("C1:E1").mergeAcross();
sheet.getRange("B1").setValue(date);
sheet.getRange("B2:F2").merge();
sheet.getRange("B2").setValue(magasin);
//BLOC RECETTE DU JOUR ******
sheet.getRange("B4:F4").merge();
sheet.getRange("B4").setValue("RECETTE DU JOUR");
sheet.getRange("C5").setValue("Caisse 1");
sheet.getRange("D5").setValue("Caisse 2");
sheet.getRange("E5").setValue("Total");
sheet.getRange("E7:E10").setFormulas("=R[0]C[-2]+R[0]C[-1]")
sheet.getRange("B6").setValue("CAISSIER");
sheet.getRange("B7").setValue("ESPECE DU JOUR");
sheet.getRange("B8").setValue("CARTE BLEU");
sheet.getRange("B9").setValue("CHEQUE");
sheet.getRange("B10").setValue("TOTAL (€)");
//BLOC FOND DE CAISSE ******
sheet.getRange("B12:F12").merge();
sheet.getRange("B12").setValue("DETERMINATION DU FOND DE CAISSE");
sheet.getRange("B13").setValue("Fond de caisse J-1");
sheet.getRange("B14").setValue("SOUS-TOTAL");
sheet.getRange("B15").setValue("PRELEVEMENT");
sheet.getRange("B16").setValue("SORTIE DE CAISSE");
sheet.getRange("B17").setValue("Fond de caisse théorique:");
sheet.getRange("B18").setValue("Fond de caisse compté:");
sheet.getRange("B19").setValue("Erreur");
//BLOC SORTIE DE CAISSE ******
}
奇妙な事実がここに来ます:
最初のマージをコメントに入れるsheet.getRange("A1:D1").merge();
と、コードは問題ありません。
範囲「A1:D1」を他の何かに変更すると、いつかコードが機能します。
最初の 3 行を除く完全なコードをコメントに入れると、機能します。
もちろん、マージ ボタンを使用して手動でマージすることもできます。
このエラーを理解できません。修正または回避策を見つけるのを手伝ってもらえますか?