1

意図した操作:私は 2 つのスプレッドシートを持っています (スプレッドシートのシートとは言いませんでしたが、2 つの完全に別個のスプレッドシートであることに注意してください)。

1 つのスプレッドシートが Google フォームからの送信を受け取ります。チームは提出物を監視し、それぞれをさまざまなカテゴリ (請求済み、未請求、解決済み、保留中) に設定します。物事が保留中としてマークされている場合、マークされた行をのチームが処理する2 番目のスプレッドシートにコピーする必要があります。

重要な注意: IMPORTRANGEでは十分ではありませ。2 番目のチームは、コピーされたデータを操作する必要がありますが、IMPORTRANGE や同様の機能ではそれができません。その結果、私はappendRow()代わりに使用しようとしています。

問題:理由は不明ですが、コードが のポイントに到達するまではすべて正常に動作しますが、その時点openById()で実行は次のエラーで失敗します。

[13-10-23 15:00:59:117 PDT] SpreadsheetApp.openById([ss-key]) [0 秒] [13-10-23 15:00:59:133 PDT] 実行に失敗しました: アクションは許可されていません(26 行目、ファイル「PK-PR Manager」) [合計実行時間 0.267 秒]

試したこと: スクリプト プロジェクトをライブラリとして保存し、それを他のスプレッドシートに追加しようとしました。アカ​​ウントへのスクリプト アクセスを取り消して、再度有効にしようとしました。スクリプトを両方のスプレッドシートにリンクする方法を探してみました (明らかに成功しませんでした)。ドキュメントと、言及された機能に関連して見つけられるものすべてで、Googleを広範囲に検索しました。すべての変数、構文などをチェック、ダブルチェック、トリプルチェックしました。念のため、ターゲットスプレッドシートの共有権限もチェックして変更しました。

実際のコード:

function onEdit(e) {
  if (e.range.getColumn() == 2) {
    var myCell = e.range;
    status = myCell.getValue();
    myCell.setFontWeight("bold");
    if (status == "Claimed") {
      myCell.setBackgroundColor("#F5B36C");

      myCell = myCell.offset(0,1);
      myCell.setValue(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss"));
    } else if (status == "Resolved") {
      myCell.setBackgroundColor("#95C47E");
    } else if (status == "Pending") {
      myCell.setBackgroundColor("#B4A7D6");
      myCell = myCell.offset(0,1);
      myCell.setValue(Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss"));

      var myRow = myCell.getRow();
      var lineRange = master.getRange("C" + myRow + ":L" + myRow);
      var lineValues = lineRange.getValues();
      var pkss = SpreadsheetApp.openById(pkssKey);
      //Logger.log(pkss.getName());
      var pksheet = pkss.getSheetByName("Sheet1");
      pksheet.appendRow(lineValues[0]);
    } else {
      myCell.setBackgroundColor("#E06767");
      myCell.setValue("Unclaimed");

      myCell = myCell.offset(0,1);
      myCell.setValue("");

      myCell = myCell.offset(0,1);
      myCell.setValue("");
    }
  }
}
4

0 に答える 0