setValue を呼び出す権限がありません エラー表示について。

934 views
Skip to first unread message

Sayoko Miyata

unread,
May 31, 2016, 1:05:58 AM5/31/16
to Google Apps API Japan
3つのシートから構成されるスプレッドシートにおいて、アクティブではないシートから任意の項目の値をアクティブなシートにコピーしたいのですが、
実行すると「setValue を呼び出す権限がありません」と出てエラーになってしまいます。
値をプログラムに直接記述して走らせてみると、うまくいくのですが・・・。
お知恵をお貸しください!!

function DATASET(id_d,cate){
    
  var bk = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = bk.getActiveSheet();
  var sh = bk.getSheetByName("Order Report");
 var last_row = sh.getLastRow();
  
  for(var i = last_row; i >= 2 ; i--){
    if(id_d == sh.getRange(i, 1).getValue()){
      for(var j = 29; j >= 1; j--){
        if(cate == sh.getRange(1, j).getValue()){
          var objCell = sheet.getActiveCell();
           sheet.getRange(objCell.getRow(),objCell.getColumn()).setValue(sh.getRange(i, j).getValue());
        }
      }
    }
 }

}

hikochang

unread,
Jun 14, 2016, 12:25:28 PM6/14/16
to Google Apps API Japan
うまく動かない部分は分解して、どこまで動作しているか確認したほうが良いと思います。
           sheet.getRange(objCell.getRow(),objCell.getColumn()).setValue(sh.getRange(i, j).getValue());

上記のを以下のように変更してステップ実行してデバッグできると思います。
          var objCell = sheet.getActiveCell()
          var test_setValue = sh.getRange(i, j).getValue();
          var test_getRangeRow = objCell.getRow();
          var test_getRangeCol = objCell.getColumn();
          var test_getRange = sheet.getRange(test_getRangeRow,test_getRangeCol);
          test_getRange.setValue(test_setValue);

また、for文やif文がない状態で動作確認&質問を行ったほうが良いですね。
実現したい機能がわかりませんが、Activeシートが"Order Report"の時についても考慮されていますか?この関数を見る限りではわからないですが、なんとなく不安な感じがします。

2016年5月31日火曜日 14時05分58秒 UTC+9 Sayoko Miyata:
Reply all
Reply to author
Forward
0 new messages