我試圖在 1 個函式中輸入 2 個值。我可以毫無問題地輸入第一個,第二個是根據第一個值輸入的,因此由于它們都具有相同的功能,因此無法輸入第二個。我flush()在輸入第一個值后嘗試使用方法,但第二個值仍然找不到第一個值。這是我的代碼:
function addItem(e){
var sheet = ss.getSheetByName('items');
var id = e.parameter.id;
var qty = e.parameter.qty;
var lc = sheet.getLastColumn();
var lr = sheet.getLastRow();
var data = sheet.getDataRange().getValues();
var old_date = data.pop()[0];
var new_date = e.parameter.date;
if (old_date != new_date) sheet.appendRow([new_date]);
SpreadsheetApp.flush();
for (var i = 1; i <= lc; i ) {
for (var j = 1; j <= lr; j ) {
var rid = sheet.getRange(1, i).getValue();
var red = sheet.getRange(j,1).getValue();
if (rid == id && red == new_date){
sheet.getRange(j, i).setValue(qty);
}}}}
我的目標是new_date使用pop()[0]and添加字串appendRow,等待資料輸入使用SpreadsheetApp.flush(),獲取范圍和值new_date以及id增量檢查所有行和列,這樣我就可以qty基于id列和new_date行輸入。
如圖所示,11/11/ new_date1111 在(第 3id行,第 1 列)中,而 1 在(第 1 行,第 2 列)中,我需要輸入qty(第 3 行和第 2 列)。我遇到的問題是當代碼運行時,它無法檢測new_date到剛剛輸入的那個,所以qty無法輸入,因為它認為new_date不存在。

uj5u.com熱心網友回復:
我只是將功能分開,它完美地作業。
function addDate(e){
var sheet = ss.getSheetByName('items');
var data = sheet.getDataRange().getValues();
var old_date = data.pop()[0];
var new_date = e.parameter.date;
if (old_date != new_date) sheet.appendRow([new_date]);
}
function addItem(e){
var sheet = ss.getSheetByName('items');
var sku = e.parameter.sku;
var qty = e.parameter.qty;
var date = e.parameter.date;
var lc = sheet.getLastColumn();
var lr = sheet.getLastRow();
SpreadsheetApp.flush();
for (var i = 1; i <= lc; i ) {
for (var j = 1; j <= lr; j ) {
var rid = sheet.getRange(1, i).getValue();
var red = sheet.getRange(j,1).getValue();
if (rid == sku && red == date){
sheet.getRange(j, i).setValue(qty);
var result = "Input Succeed";
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/353606.html
上一篇:匹配列值和復制資料的腳本
下一篇:拆分字串值c#
