意図した操作:私は 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("");
}
}
}