1
マイアプリスクリプトコードは、セルの編集時にwatchColに基づいて隣接セルをタイムスタンプします。編集したセルが空白の場合、隣接セルを空にするにはどうすればいいですか?
私が行う必要があるのは、ユーザーが値を削除した場合にタイムスタンプを削除することです。例えば。タスクのリストのいずれかを完了すると、Xを2行目の列に配置しますが、Xの意味を取り除いてタスクを終了しなかった場合は、その横にタイムスタンプがありません。
function onEdit(e)
{
var s = e.source.getActiveSheet(),
watchCols = [2, 5, 8, 11, 14, 17],
offsetCol = [1, 1, 1, 1, 1, 1],
ind = watchCols.indexOf(e.range.columnStart);
if (s.getName() !== "Sheet1" || ind === -1) return;
e.range.offset(0, offsetCol[ind])
.setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT-4", "YYYY-MMM-dd hh:m:s a"))
}
これが動作するようには思えない私が作った最後の試みです:
if(ISBLANK(e.range.columnStart) && ISBLANK(e.range.rowStart)) {
e.range.offset(0, offsetCol[ind]).setValue("");
} else {
e.range.offset(0, offsetCol[ind]).setValue(!e.value ? null : Utilities.formatDate(new Date(), "GMT-4", "YYYY-MMM-dd hh:m:s a"))
}
これは面白いです... Metaは親切に別の問題を手伝ってくれました。インストール可能なトリガーを使用することで元のコードは変更せずに動作します。ユーザーがXなどの値を取り除くとタイムスタンプ列は空になります細胞。なぜそれがうまくいくのか分かりませんが、理由は分かります。 http://stackoverflow.com/questions/36871241/how-to-allow-onedit-function-to-affect-protected-cell-in-a-google-sheet – markSS
ところで、ISBLANKスプレッドシート機能であり、Apps Script機能ではありません。スプレッドシート機能はApps Scriptでは使用できません。 –