[英]GAS get cell +1 based on cell Value?
我有一個容器綁定腳本和一個 htmlService 側邊欄。
該表包含 2 列 B,C。
B 包含一個 ID,C 包含一個項目名稱。
您將 ID 輸入 html 輸入並提交,如果存在與您輸入的 ID 匹配的 ID,則該行將被刪除。
現在我想使用 confirm() 方法來確認刪除,如下所示:“確定要從庫存中刪除“+itemName+””
我的問題是我正在努力獲取與 ID 相鄰的項目名稱單元格值。
JS
var adjacentName = ??????
function showDeleteElectronics() {
const ui = SpreadsheetApp.getUi();
var deleteElectronicsForm = HtmlService.createTemplateFromFile('DeleteElectronicsHTML')
deleteElectronicsForm.itemName = adjacentName;
var html = deleteElectronicsForm.evaluate();
html.setTitle("Elektronik Entfernen")
ui.showSidebar(html);
}
function deleteElectronics(formObject) {
var electronicsID = formObject.electronicsLocalID
var SS = SpreadsheetApp.openById("1GSzlzj7nHPIUt-RIJfsPFobtnLbuoXedtJk1x11BdT0");
var SHEET = SS.getSheetByName("ElektronikBestand");
var RANGE = SHEET.getDataRange();
var DELETE_VAL = electronicsID;
var LOCAL_ID = 1;
function deleteItem(){
var rangeVals = RANGE.getValues();
//Reverse the 'for' loop.
for(var i = rangeVals.length-1; i >= 0; i--){
if(rangeVals[i][LOCAL_ID] === DELETE_VAL){
SHEET.deleteRow(i+1);
};
};
};
deleteItem();
}
HTML
<div class="sidebarwrapper">
<div class="xbuttonwrapper">
<button class="xbutton" onclick="google.script.host.close()">
<svg class="x" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212.982 212.982" style="enable-background:new 0 0 212.982 212.982" xml:space="preserve"><path style="fill-rule:evenodd;clip-rule:evenodd" d="m131.804 106.491 75.936-75.936c6.99-6.99 6.99-18.323 0-25.312-6.99-6.99-18.322-6.99-25.312 0L106.491 81.18 30.554 5.242c-6.99-6.99-18.322-6.99-25.312 0-6.989 6.99-6.989 18.323 0 25.312l75.937 75.936-75.937 75.937c-6.989 6.99-6.989 18.323 0 25.312 6.99 6.99 18.322 6.99 25.312 0l75.937-75.937 75.937 75.937c6.989 6.99 18.322 6.99 25.312 0 6.99-6.99 6.99-18.322 0-25.312l-75.936-75.936z"/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></svg>
</button>
</div>
<div class="titlewrapper">
<img class="ctlogotitle" src="https://i.imgur.com/d1VMjvs.png">
<h1 class="title">Elektronik <br> Entfernen</h1>
</div>
<div class="divider"></div>
<form class="inputformwrapper" id="removeElectronicsFrom">
<div class="inputblockwrapper">
<div class="labelwrapper">
<label class="requiredlabel" for="electronicsLocalID">Lokale ID</label>
</div>
<input class="inputfield"
type="text"
placeholder="PREF00000001..."
minlength="12"
maxlength="12"
id="electronicsLocalID"
name="electronicsLocalID"
required>
</div>
<div class="confirmbuttonwrapper">
<input class="confirmbutton"
type="submit"
value="Entfernen"
id="removeElectronics">
</div>
</form>
</div>
<script>
document.querySelector("#removeElectronicsFrom").addEventListener("submit", function (e) {
let confirmString = "Are you sure that you want to delete " + itemName + "?";
e.preventDefault();
if (confirm(confirmString)) {
google.script.run.deleteElectronics(this);
$('#removeElectronicsFrom').trigger("reset");
} else {
$('#removeElectronicsFrom').trigger("reset");
}
});
</script>
B欄 | 立柱 C |
---|---|
ID | 項目名 |
-- | -- |
很多00000001 | 項目1 |
很多00000002 | 項目2 |
很多00000003 | 第 3 項 |
很多00000004 | 項目4 |
很多00000005 | 項目5 |
很多00000006 | 第6項 |
很多00000007 | 第 7 項 |
很多00000008 | 項目8 |
很多00000009 | 項目9 |
很多00000010 | 第 10 項 |
您必須調用 function 兩次。 首先獲取 itemname 然后刪除:
function getItemName(formObject) {
const electronicsID = formObject.electronicsLocalID;
const SHEET = getSheet();
const RANGE = SHEET.getDataRange();
const DELETE_VAL = electronicsID;
const ITEMNAMECOL = 2;
const LOCAL_ID = 1;
const rangeVals = RANGE.getValues();
//Reverse the 'for' loop.
for (var i = rangeVals.length - 1; i >= 0; i--) {
if (rangeVals[i][LOCAL_ID] === DELETE_VAL) {
return {
i,
id: rangeVals[i][LOCAL_ID],
itemName: rangeVals[i][ITEMNAMECOL],
};
}
}
}
function getSheet() {
const SS = SpreadsheetApp.openById(
'1GSzlzj7nHPIUt-RIJfsPFobtnLbuoXedtJk1x11BdT0'
);
const SHEET = SS.getSheetByName('ElektronikBestand');
return SHEET;
}
function deleteElectronics(i) {
getSheet().deleteRow(i + 1);
}
document.querySelector("#removeElectronicsFrom").addEventListener("submit", function (e) {
e.preventDefault();
google.script.run.withSuccessHandler(({i, itemName}) => {
const confirmString = "Are you sure that you want to delete " + itemName + "?";
if (confirm(confirmString)) {
google.script.run.deleteElectronics(i);
$('#removeElectronicsFrom').trigger("reset");
} else {
$('#removeElectronicsFrom').trigger("reset");
}
}).getItemName()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.