あけましておめでとうございます! 今年もよろしくお願いします! すみません、こちらで質問してよいか......

あけましておめでとうございます!
今年もよろしくお願いします!

すみません、こちらで質問してよいかわからないのですが、、

GASでスプレッドシートを制御しようとしていて、
複数のファイルを一括で操作しようと書いてみたスクリプトの実行が延々終わらず、どうやら無限ループになってしまっているようなのですが、
どこを修正したらよいのかわかりません。。

具体的には以下のコードです。

//全店舗
function hidegridcolumns() {
//店舗一覧シートから参照して全店舗に適用
var shlist = SpreadsheetApp.openById(“1MMlFeACloqp23RZ61kEcO1cLeO_xCcPVfsyIJjOMOmM”).getActiveSheet()
var lastRow = shlist.getLastRow()
for (n=2;n<=lastRow;n++){
var targetID = shlist.getRange(n,2).getValue()
var ash = SpreadsheetApp.openById(targetID)
var sheets = ash.getSheets()
//グリッドを非表示
for (i=1; i<ash.getSheets().length;i++) {
sheets[i].setHiddenGridlines(true)
}
//I:R列(集計表部分)を非表示
for (j=1; j<ash.getSheets().length;j++) {
var range = sheets[j].getRange(1,9,1,10)
sheets[j].hideColumn(range)
}
}
}

ご教授いただける方、よろしくお願いいたします。

また、初心者がローコードに挑戦して、つまずいてしまった場合、
どうやって解決するのがよいとか、もしアドバイスあれば教えて欲しいです!

よろしくお願いします!

補足
こちらだと正常に動きました
function hidegridcolumns() {
var ash = SpreadsheetApp.openById(“1pq4sEVZbJtttB9I5iILWcDjtfOqaAoJ-pG87WFk78O0”)
var sheets = ash.getSheets()
//グリッドを非表示
for (i=1; i<ash.getSheets().length;i++) {
sheets[i].setHiddenGridlines(true)
}
//I:R列(集計表部分)を非表示
for (i=1; i<ash.getSheets().length;i++) {
var range = sheets[i].getRange(1,9,1,10)
sheets[i].hideColumn(range)
}
}

回答者
4行目openById で取得している スプレッドシートIDの
1MMlFeACloqp23RZ61kEcO1cLeO_xCcPVfsyIJjOMOmM
部分のスコープ権限が無いので、取得ができないだけでは無いでしょうか?
該当コードを実行すると、8行目でエラーが出ます。
試しに
/全店舗
function hidegridcolumns() {
//店舗一覧シートから参照して全店舗に適用
var shlist = SpreadsheetApp.openById(“1pq4sEVZbJtttB9I5iILWcDjtfOqaAoJ-pG87WFk78O0”).getActiveSheet()
var lastRow = shlist.getLastRow()
for (n=2;n<=lastRow;n++){
var targetID = shlist.getRange(n,2).getValue()
var ash = SpreadsheetApp.openById(targetID)
var sheets = ash.getSheets()
//グリッドを非表示
for (i=1; i<ash.getSheets().length;i++) {
sheets[i].setHiddenGridlines(true)
}
//I:R列(集計表部分)を非表示
for (j=1; j<ash.getSheets().length;j++) {
var range = sheets[j].getRange(1,9,1,10)
sheets[j].hideColumn(range)
}
}
}
上記でおそらく動くとは思います。
【参考】
GASのエラー”呼び出す権限がありません”はマニフェストファイルに問題あり

また、初心者がローコードに挑戦して、つまずいてしまった場合、
ローコードの内容によりますが、今回の場合には、GASになるので、
teratailでの質問/回答が参考になると思います。
https://teratail.com/tags/Google+Apps+Script

質問者
ご回答ありがとうございます!
いただいたコード実行したのですが、うまくできませんでした。。
openbyIdで指定してもらってるファイルは確かにスクリプトを書くときに開いていたスプレッドシートなんですが、そのシートのgetRange(n,2)にはtargetIDを入れてないのでそっちがエラーになってしまいます。
また、当初のコードを実行しても権限のエラーは出ず、実行はされるのですが、キャンセルしないとずーっと実行中になってしまう感じなんです。。
編集したい複数のスプレッドシートファイルのIDを別々のfunctionで個別に入力すると動作したので、一旦それでやってみることにします!
ありがとうございます。
teratailの情報も助かります!またつまづいたらこちらも活用させてもらいます!

参考画像

参考URL

https://teratail.com/tags/Google+Apps+Script