javascript - 在 GAS 中重新运行的函数
问题描述
我正在使用 GAS 发送和接收文本。有一个函数可以发送文本(sendTexts.gs),一个函数可以接收(receiveTexts.gs)。我将这两个功能都链接到工作表上的各个按钮,但是当我运行一个功能时,两者都在运行(每次都会发送文本)。是否有缓存或需要清除的东西?receiveTexts 在代码中没有可以在其中发送消息的命令,并且根据记录器测试,我知道当我只单击一个时两者都在运行。编辑:这也发生在 GAS“终端”中。如果我在脚本编辑器中单击运行,则两者都会运行。
这是带有个人/个人信息的代码(代码/电话号码已编辑):
function sendSms(to, body) {
var playerArray = getMeta();
Logger.log(playerArray);
var messages_url = "https://api.twilio.com/2010-04-01/Accounts/EDIT/Messages.json";
var payload = {
"To": to,
"Body" : body,
"From" : "EDIT"
};
var options = {
"method" : "post",
"payload" : payload
};
options.headers = {
"Authorization" : "Basic " + Utilities.base64Encode("EDIT")
};
UrlFetchApp.fetch(messages_url, options);
}
function sendAll() {
var spreadsheet = SpreadsheetApp.getActive();
var text = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName('Meta')).getRange('B4').getValue();
var playerArray = getMeta();
Logger.log(text);
for (i=0; i<playerArray.length;i++) {
try {
var number = playerArray[i][1];
Logger.log(number);
response_data = sendSms(number, text);
status = "sent";
} catch(err) {
Logger.log(err);
status = "error";
}
Logger.log(status);
}
}
function sendTexts() {
sendAll();
}
Logger.log("ran send texts");
这是具有相同调整的接收文本代码:
function receiveTexts() {
var spreadsheet = SpreadsheetApp.getActive();
var ACCOUNT_SID = "EDIT";
var ACCOUNT_TOKEN = "EDIT";
var toPhoneNumber = "+EDIT";
var sheet = spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Meta'), true);
var playerArray = getMeta();
var numberToRetrieve = playerArray.length;
var hoursOffset = 0;
var options = {
"method" : "get"
};
options.headers = {
"Authorization" : "Basic " + Utilities.base64Encode(ACCOUNT_SID + ":" + ACCOUNT_TOKEN)
};
var url="https://api.twilio.com/2010-04-01/Accounts/" + ACCOUNT_SID + "/Messages.json?To=" + toPhoneNumber + "&PageSize=" + numberToRetrieve;
var response = UrlFetchApp.fetch(url,options);
// -------------------------------------------
// Parse the JSON data and put it into the spreadsheet's active page.
// Documentation: https://www.twilio.com/docs/api/rest/response
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Meta'), true);
var numRounds = spreadsheet.getRange('B2').getValue();
var theSheet = SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName('Attacks'),true);
var theColumn = (numRounds*2)+1;
var dataAll = JSON.parse(response.getContentText());
for (i=0; i<dataAll.messages.length; i++){
var sentNumber = dataAll.messages[i].from;
Logger.log(sentNumber);
for (k=0; k<playerArray.length;k++){
Logger.log(playerArray[k][1]);
if (playerArray[k][1]==sentNumber){
var player = k;
Logger.log('Success');
Logger.log(player);
break;
}
}
var playerRow = playerArray[player][0];
Logger.log(playerRow);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Attacks'),true);
theSheet.getRange(playerRow, theColumn).setValue(dataAll.messages[i].body);
}
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Meta'), true);
sheet.getRange(2,2).setValue(numRounds +1);
}
Logger.log("texts received ran");
EDIT2:我将 getMeta 分离到一个单独的文件中。现在,当我运行 getMeta 时,它还会运行其他两个脚本。任何时候运行任何一个脚本,所有三个都会运行。这让我觉得它与代码无关,但与某些设置或某事有关。侧边栏中脚本的顺序是否重要?我觉得不是因为运行这三个中的任何一个都会导致所有三个都运行。
解决方案
推荐阅读
- f# - 如何在给定条件下执行操作?
- here-api - 日本路线匹配
- neo4j - 过滤节点时的 neo4j 性能问题
- javascript - 将对象数组转换为列表
- data-augmentation - 在 4D 数据中使用 imblearn SMOTE
- jekyll - Jekyll::Drops::CollectionDrop:Class 的未定义方法 `delegate_method_as' (NoMethodError)
- arrays - 在 C 中为 ATSAME54 MCU 的特定内存位置创建数据结构
- postgresql - 如何以复合类型作为参数调用 postgres 函数,其中复合类型的字段之一是 jsonb 数据类型?
- typescript - 如何正确使用来自 Redux Toolkit 的 createAsyncThunk 和 TypeScript?
- git - 如何在 Windows 上删除 Git 中的更改?