以下のような配列があった場合、アクティブになったセルを基準として、データを挿入したいです。シートのインデックス0,0(A1)を基準とした場合、A1,B1,C1,D1の順に1,2,3,4とデータを挿入していきたいです。
let arr = [1,2,3,4];
以下が作ってみたコードで、サイドバーのボタンをクリックするとアクティブなセルにデータが入力されるようにしています。しかし、動作しません。
根本的にやり方が間違えている、便利な関数があるなどの情報があれば教えていただけますか?
htmlファイル
1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 </head> 6 <body> 7 <input type="button" value="卵1" id="egg1"> 8 <script> 9 let egg1 = document.getElementById("egg1"); 10 egg1.addEventListener("click",() =>{ 11 google.script.run.insert(); 12 }); 13 14 </script> 15 </body> 16</html> 17
gsファイル
1/************************************ 2メニューに追加する 3************************************/ 4function onOpen() { 5 SpreadsheetApp.getUi() 6 .createMenu("サイドバーを開く") 7 .addItem("開く", "openSidebar") 8 .addToUi(); 9} 10 11/************************************ 12サイドバーの表示 13************************************/ 14function openSidebar() { 15 const html = HtmlService.createHtmlOutputFromFile('index') 16 .setTitle("サイドバー"); 17 SpreadsheetApp.getUi().showSidebar(html); 18} 19 20 21let arr = [1,2,3,4]; 22 23function insert(){ 24let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 25let act_cell = sheet.getActiveCell(); 26 27let ui = SpreadsheetApp.getUi(); 28 29 30//基準位置、現在位置 31 for(let i=0;i<arr.length;i++){ 32sheet.getRange(act_cell.getRowIndex()+[i] , act_cell.getColumn()).setValue(arr[i]); 33 } 34 35}
gsファイルのループを以下に変更すると、アクティブになっているセルには文字が入力されます。
for(let i=0;i<arr.length;i++){ sheet.getRange(act_cell.getRowIndex(), act_cell.getColumn()).setValue("文字"); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/21 10:48
2021/06/21 11:56
2021/06/21 21:40
2021/06/22 00:11
2021/06/22 01:27